Question

Comment puis-je remplir une chaîne de caractères avec des espaces à gauche en utilisant printf?

Par exemple, je souhaite imprimer " Bonjour " précédé de 40 espaces.

De plus, la chaîne que je veux imprimer se compose de plusieurs lignes. Dois-je imprimer chaque ligne séparément?

EDIT: Juste pour clarifier les choses, je veux exactement 40 espaces imprimés avant chaque ligne.

Était-ce utile?

La solution

Si vous voulez le mot "Bonjour" pour imprimer dans une colonne de 40 caractères de large, avec des espaces à gauche, utilisez la commande suivante.

char *ptr = "Hello";
printf("%40s\n", ptr);

Cela vous donnera 35 espaces, puis le mot "Bonjour". C’est ainsi que vous formatez les éléments lorsque vous savez quelle est la largeur de la colonne, mais que les données changent (eh bien, c’est une une façon de le faire).

Si vous savez que vous voulez exactement 40 espaces, puis du texte, enregistrez simplement les 40 espaces dans une constante et imprimez-les. Si vous devez imprimer plusieurs lignes, utilisez plusieurs instructions printf comme celle ci-dessus, ou faites-le en boucle, en modifiant la valeur de ptr à chaque fois.

Autres conseils

J'utilise cette fonction pour indenter ma sortie (par exemple, pour imprimer une arborescence). Le indent est le nombre d'espaces avant la chaîne.

void print_with_indent(int indent, char * string)
{
    printf("%*s%s", indent, "", string);
}
int space = 40;
printf("%*s", space, "Hello");

Cette instruction réservera une ligne de 40 caractères, en imprimant une chaîne à la fin de la ligne (en supprimant les espaces supplémentaires de telle sorte que la longueur totale de la ligne soit constante à 40). Idem peut être utilisé pour les caractères et les entiers comme suit:

printf("%*d", space, 10);
printf("%*c", space, 'x');

Cette méthode utilisant un paramètre pour déterminer les espaces est utile lorsqu'un nombre variable d'espaces est requis. Ces instructions continueront à fonctionner avec les littéraux entiers comme suit:

printf("%*d", 10, 10);
printf("%*c", 20, 'x');
printf("%*s", 30, "Hello");

J'espère que cela aidera quelqu'un comme moi à l'avenir.

Si vous voulez exactement 40 espaces avant la chaîne, vous devez juste faire:

printf("                                        %s\n", myStr );

Si cela est trop sale, vous pouvez le faire (mais ce sera plus lent que de taper manuellement les 40 espaces):      printf ("% 40s% s", "", MyStr);

Si vous souhaitez que la chaîne soit alignée dans la colonne 40 (c’est-à-dire que vous devez laisser 39 espaces au maximum pour que le caractère le plus à droite se trouve dans la colonne 40), procédez comme suit:      printf ("% 40s", myStr);

Vous pouvez également mettre "jusqu'à". 40 espaces APRES la chaine en faisant:      printf ("% - 40s", myStr);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top