Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: hervasiop12345 en 20 Octubre 2013, 22:20 pm



Título: Tabular salida en C
Publicado por: hervasiop12345 en 20 Octubre 2013, 22:20 pm
Hola a todos.

He implementado una orden para un intérprete de comandos que muestra los procesos en ejecución. La cuestión es que quiero que la salida aparezca tabulada pero no lo consigo, unas veces sale bien y otras mal. Primero imprimo las columnas y luego debajo ya mientras recorro la lista de procesos imprimo con la misma separación usando \t. ¿Alguna función en C para tabular salida? uso printf  pero nada.

Antes de imprimir hago fflush(stdout) para limpiar por si acaso pero no sirve de nada.

Gracias adelantadas. Un saludo


Título: Re: Tabular salida en C
Publicado por: vangodp en 21 Octubre 2013, 05:02 am
#include <stdio.h>

int main()
{
   int precio1 = 1;
   int precio2 = 10;
   int precio3 = 100;
   int precio4 = 1000;
   
   printf("\t%d\n", precio1);
   printf("\t%d\n", precio2);
   printf("\t%d\n", precio3);
   printf("\t%d\n", precio4);
   printf("\t%d\n", precio3);
}

Así?


Título: Re: Tabular salida en C
Publicado por: eferion en 21 Octubre 2013, 08:54 am
Hola a todos.

He implementado una orden para un intérprete de comandos que muestra los procesos en ejecución. La cuestión es que quiero que la salida aparezca tabulada pero no lo consigo, unas veces sale bien y otras mal. Primero imprimo las columnas y luego debajo ya mientras recorro la lista de procesos imprimo con la misma separación usando \t. ¿Alguna función en C para tabular salida? uso printf  pero nada.

Antes de imprimir hago fflush(stdout) para limpiar por si acaso pero no sirve de nada.

Gracias adelantadas. Un saludo

Entiendo que tu lo que persigues es algo tal que...

Código:
Id   Nombre   Edad
 1   Maria      20
 2   Sergio     28
 3   Laura      26
 4   Jose       45
 5   Sonia       8

La forma correcta de formatear esta salida es configurar printf para que "reserve" un espacio mínimo para cada campo:

Código
  1. printf( "%02d", id );    // Dos caracteres para el id, relleno con ceros.
  2. printf( " " );           // Espacio adicional
  3. printf( "%8s", nombre ); // 8 caracteres para el nombre.
  4. printf( " " );           // Espacio adicional
  5. printf( "%-2d", edad );  // 2 caracteres para la edad, alineacion derecha.


Título: Re: Tabular salida en C
Publicado por: rir3760 en 22 Octubre 2013, 02:44 am
La forma correcta de formatear esta salida es configurar printf para que "reserve" un espacio mínimo para cada campo
Solo un comentario: cuando se indica la anchura del campo la alineación predeterminada es a la derecha, "%-" se utiliza cuando se quiere una alineación a la izquierda.

Un saludo


Título: Re: Tabular salida en C
Publicado por: eferion en 22 Octubre 2013, 11:43 am
Solo un comentario: cuando se indica la anchura del campo la alineación predeterminada es a la derecha, "%-" se utiliza cuando se quiere una alineación a la izquierda.

Un saludo

Cierto. Un lapsus tonto.

Gracias por la corrección