J'ai deux fonctions, l'une qui produit des messages comme Starting initialization...
et un autre qui vérifie les codes de retour et les sorties "Ok"
, "Warning"
ou "Error"
. Cependant, la sortie produite est de longueur différente:
Starting initialization...Ok.
Checking init scripts...Ok.
Comment puis-je obtenir quelque chose comme ça:
Starting initialization... Ok.
Checking init scripts... Ok.
Vous pouvez spécifier la largeur des champs de chaîne, par exemple.
printf("%-20s", "initialization...");
et alors tout ce qui est imprimé avec ce champ sera rempli de blancs à la largeur que vous indiquez.
Le -
left-justifie votre texte dans ce champ.
printf
permet de formater avec des spécificateurs de largeur. par exemple.
printf( "%-30s %s\n", "Starting initialization...", "Ok." );
Vous utiliseriez un spécificateur de largeur négative pour indiquer une justification à gauche, car la valeur par défaut consiste à utiliser une justification à droite.
De plus, si vous voulez avoir la possibilité de choisir le width
, vous pouvez choisir l’un des deux formats suivants (avec ou sans troncature):
int width = 30;
//no truncation uses %-*s
printf( "%-*s %s\n", width, "Starting initialization...", "Ok." );
// output is "Starting initialization... Ok."
//truncated to the specified width uses %-.*s
printf( "%-.*s %s\n", width, "Starting initialization...", "Ok." );
// output is "Starting initialization... Ok."
Il y a aussi le %n
modificateur qui peut aider dans certaines circonstances. Il retourne la colonne sur laquelle la chaîne était si loin. Exemple: vous voulez écrire plusieurs lignes qui sont dans la largeur de la première ligne comme une table.
int width1, width2;
int values[6][2];
printf("|%s%n|%s%n|\n", header1, &width1, header2, &width2);
for(i=0; i<6; i++)
printf("|%*d|%*d|\n", width1, values[i][0], width2, values[i][1]);
imprimera 2 colonnes de la même largeur quelle que soit la longueur des deux chaînes header1
et header2
puis-je avoir. Je ne sais pas si toutes les implémentations ont le %n
mais Solaris et Linux le font.
Il existe également une solution peu technique consistant à compter manuellement l'ajout d'espaces pour aligner vos messages. Rien ne vous empêche d'inclure quelques espaces de fin dans vos chaînes de message.