Affichage jolie d'un tablea de structure en C

aaeezzrr -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour tout le monde :)

Voilà , en fait j'ai un tableau de structure remplis du genre
struct personne{ char nom[25] , char prenom[25] etc ........... }
struct personne liste[100] ;

admettons ma liste est remplie, je voudrais afficher sous forme de tableau la liste. Donc je voudrais que tous les noms soient bien allignés sur une même colonne, que tous les prenoms soient alignés sur une meme colonnes etc...

j'ai essayé avec des tabulation \t mais c'est très approximatif, si il y a un nom trop grand ou trop petit ca marche pas du tout... Je sais pas s'il y a une astuce pour faire ce genre de chose simplement.

merci de votre aide .
A voir également:

3 réponses

scriptiz Messages postés 1424 Date d'inscription   Statut Membre Dernière intervention   425
 
A mon avis si tu utilise le str_len en incluant le string.h, tu peux calculer la taille de tes nom, prénoms, ... et remplir ce qu'il manque par des espaces pour garder tout ça aligné.

Exemple, avec 20 caractères maxi pour le nom et pareil pour le prénom :
|Nom+++++++++++++++++|Prenom++++++++++++++|
|--------------------|--------------------|
|Smith+++++++++++++++|John++++++++++++++++|
|McCain++++++++++++++|Georges+++++++++++++|

(les + représentent des espaces ^^

Donc à partir de Smith, str_len me retourn 5, je fait donc (le nombre de colonnes attribué) - (longueur du nom) ce qui donne 20 - 5 = 15. Avec ce 15 je fait une petite boucle for qui va m'afficher 15 espaces.

Enfin c'est assez lourd comme solution mais bon je début en C et je n'ai pas d'autres idées à part utiliser les \t mais comme tu dit c'est variable si les noms sont trop longs ou trop courts l'un par rapports aux autres.
0
aaeezzrr
 
Oui j'avais pensé aussi à cette solution , mais en effet , c'est un peu lourd :D ... à défaut d'en trouver une autre je ferais comme ca je pense :S...

merci de ta réponse, si quelqu'un a une autre idée , je prends :D


:)
0
sadektlili Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   4
 
utilise deux et trois \t

exp: printf("%s\t\t\t%s",.............);
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Les tabulation ne sont pas toujours la meilleurs solutions.
Apprends utiliser printf
Voici un exemple
lami20j@debian:~/trash$ cat ccm24_aligner.c
#include<stdio.h>

int main()
{
        char *nom[3] = {
                "INTEL",
                "MAC",
                "LINUX",
        };
        char *prenom[3] = {
                "Pentium",
                "Os",
                "Debian",
        };
        int i;
        for(i=0;i<3;++i)
                printf("%-20s%-20s\n",nom[i],prenom[i]);
        return 0;
}
lami20j@debian:~/trash$ gcc ccm24_aligner.c
lami20j@debian:~/trash$ ./a.out
INTEL               Pentium
MAC                 Os
LINUX               Debian
0