C - Mise en page sous forme de tableaux

Résolu/Fermé
Ben - 24 janv. 2009 à 18:46
 Ben - 24 janv. 2009 à 21:29
Bonjour,

J'ai un souci de mise en page en C. Voilà ce que je souhaiterai afficher dans la console.
Nom1 | Prenom1
Nom2 | Prenom2
etc

A priori rien de bien compliqué mais selon la taille du nom les informations ne sont pas nécessairement alignées. Y a-t-il un moyen simple d'afficher un bon alignement quelques soit la longueur du nom (j'ai essayé de bidouiller avec des tabulations mais c'est pas fameux j'ai toujours un souci avec les noms trop longs)?
Je précise que les informations sont extraites d'un fichier et sont affichés grâce à une boucle while donc je n'ai pas la possibilité de gérer l'affichage ligne par ligne (il y a plus d'une centaine de noms à afficher).

Je me doute que ça peut paraître assez dérisoire comme problème mais c'est pour un projet noté où la présentation ne peut pas être négligée.

Merci d'avance pour vos réponses.
A voir également:

4 réponses

0x0syscall Messages postés 85 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 30 juin 2009 5
24 janv. 2009 à 19:10
utilise le \t

exemple:
#include "stdio.h"

main()
{
        printf("aaaaaa\t|bbbb\n");
        printf("cc\t|ddd\n");
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
24 janv. 2009 à 19:23
Salut,
Utilise tout simplement la largeur de champ avec printf.
Par exemple : printf("%10s",toto); affichera la variable toto et l'alignera sur 10 caractères.
Cdlt
0
0x0syscall ta solution ne fonctionne que si les chaines ne sont pas trop longues. En l'occurence avec ton exemple si tu mets genre 15 a à la suite cela ne fonctionne plus.

En revanche, en combinant les tabulations avec la solution de fiddy j'obtiens quelque chose d'un peu plus satisfaisant; par encore ce que j'attends exactement parce les noms sont "alignes" a droite. C'est toujours mieux que ce que j'avais avant.

Merci à vous deux pour vos réponses.

J'attends un peu avant de mettre le sujet comme résolu, si jamais quelqu'un me donne une autre façon de faire...
0
Finalement en cherchant encore un peu j'ai trouvé la propriété "-" qui permet d'aligner à gauche, combiné avec la solution de fiddy ca donne un truc du genre %-15s et ca me donne le résultat attendu.

Encore merci à vous deux :)
0