Tabular salida en C

Iniciado por hervasiop12345, 20 Octubre 2013, 22:20 PM

0 Miembros y 1 Visitante están viendo este tema.

hervasiop12345

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

vangodp

#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í?

eferion

Cita de: 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

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


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:


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


rir3760

Cita de: eferion en 21 Octubre 2013, 08:54 AMLa 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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

eferion

Cita de: rir3760 en 22 Octubre 2013, 02:44 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