Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Torino10 en 19 Abril 2012, 16:35 pm



Título: Dar formato al mostrar array de estructura en C
Publicado por: Torino10 en 19 Abril 2012, 16:35 pm
Hola!

Quisiera saber si hay alguna forma o tienen algún ejemplo de como mostrar un array de estructura en forma de registros...

Tengo un array del tipo "estruct informacionpersonal", esta estructura tiene nombre, dni, edad, telefono, direccion, etc...

A la hora de mostrarlo comúnmente me saldría así

matricula: ...
Nombre: ...
dni: ...
edad: ...
telefono: ...
etc...

Trate de mostrarlo de la siguiente forma

matricula         nombre          dni        edad        telefono       etc
...                    ...                  ...         ...            ...                ...
...                    ...                  ...         ...            ...                ...
...                    ...                  ...         ...            ...                ...

Me sale mostrarlo asi pero se me compica cuando algunos "campos" toma una longitud mas grande o mas chica como por ejemplo el nombre que puede variar...

Qué podria hacer para establecer tamaños fijos en cada "columna"?

Es mas, necesito mostrarlos asi porque debo ordenarlos por un numero de matricula que es el primer cambio y quiero que se vea el cambio del array al cargarlo desordenadamente y luego al quedar ordenado.

Saludos!


Título: Re: Dar formato al mostrar array de estructura en C
Publicado por: durasno en 19 Abril 2012, 17:19 pm
Hola! lo que podes hacer es usar los modificadore de formato, ejemplo:
Código
  1. printf("%10s %10s %10s\n","Nombre","matricula","dni");
  2. printf("%10s %10s %10d\n","Torino10","AJFUDS",12345678);

El numero 10 entre "%" y "s" indica que va a ocupar un minimo de 10 espacios comenzando desde la derecha. Si queres justificarlo hacia la izquierda solo le agragras el menos: %-10s

Saludos


Título: Re: Dar formato al mostrar array de estructura en C
Publicado por: Torino10 en 19 Abril 2012, 17:29 pm
Ahora pruebo, gracias por responder y de paso aprovecho para hacerte una consulta...

Estoy creando una función para buscar un "registro" dentro de un array del tipo struct. El mismo que puse arriba de ejemplo.

Tengo que buscar por nombre y la hice asi

Código
  1. int busquedapornombre (struct infopersonal *puntero, int dim, char val)
  2. {  
  3.    int encontrado=-1;
  4.  
  5.    for (int i=0; i<dim; i++)
  6.        {
  7.        if (strcmp(puntero[i].nombre, val)==0)
  8.           {
  9.           encontrado=i;
  10.           }    
  11.        }
  12.  
  13.    return encontrado;
  14. }

Me sale el siguiente error: "no match for 'operator[]' in 'puntero' "

Qué podra ser que estoy haciendo mal?

A la función la llamo del main de la siguiente forma

Código
  1. ordenarpornombre (vec, dim, val);

Y la tengo definida asi

Código
  1. int busquedapornombre (struct infopersonal *puntero, int dim, char val);


Título: Re: Dar formato al mostrar array de estructura en C
Publicado por: durasno en 19 Abril 2012, 17:41 pm
No se porque te marca como si el error fuese el puntero, lo que veo mal es el uso de strcmp, esta funcion recive dos puntero a char(char *) y vos le estas pasando "val" que es un char. Corregi eso

Saludos


Título: Re: Dar formato al mostrar array de estructura en C
Publicado por: Torino10 en 19 Abril 2012, 19:00 pm
Muchisimas gracias por la ayuda!

Era ese el error y ya esta solucionado!

Un abrazo!