Aquí te paso otro ejemplo donde el cuadro se ajusta dependiendo del largo de los nombres y los apellidos introducidos :
Código C:
Ver original#include <stdio.h>
#include <string.h>
#define NUM_PERSONAS 3
typedef struct Persona //estructura con los nombres y los apellidos
{
char nombre[20];
char apellido[20];
}PERSONA;
int main()
{
PERSONA persona[NUM_PERSONAS];
int x;
int LargoNombre = 6; //largo de la palabra NOMBRE
int LargoApellido = 8; //largo de la palabra APELLIDO
printf("Ingrese 3 nombres y apellidos de personas\n"); for (x = 0 ; x < NUM_PERSONAS ; x++ )
{
printf("\n%der Nombre : ",x
+1); scanf(" %s",persona
[x
].
nombre); printf("%der Apellido : ",x
+1); scanf(" %s",persona
[x
].
apellido); }
//calculo el nombre mas largo
for (x = 0 ; x < NUM_PERSONAS ; x++ )
if ( LargoNombre
< strlen(persona
[x
].
nombre)) LargoNombre
= strlen(persona
[x
].
nombre); //calculo el apellido mas largo
for (x = 0 ; x < NUM_PERSONAS ; x++ )
if ( LargoApellido
< strlen(persona
[x
].
apellido)) LargoApellido
= strlen(persona
[x
].
apellido);
//IMPRIMO LOS DATOS
printf("\n\nIMPRIMIENDO DATOS :\n");
//el printf de abajo va hacer una linea del tamaño adecuado para mostrar los datos
printf("%.*s",LargoApellido
+LargoNombre
+11,"----------------------------------------"); printf("\n| %-*s | %-*s |\n",LargoNombre
,"NOMBRE",LargoApellido
,"APELLIDO"); printf("%.*s",LargoApellido
+LargoNombre
+11,"----------------------------------------"); for (x = 0 ; x < NUM_PERSONAS ; x++ )
{
printf("\n| %-*s | %-*s |",LargoNombre
,persona
[x
].
nombre,LargoApellido
,persona
[x
].
apellido); printf("\n%.*s",LargoApellido
+LargoNombre
+11,"----------------------------------------"); }
return 0;
}
Espero te sirva mi pana...