150 votes

Imprimante gauche avec espaces

Comment puis-je remplir une chaîne avec des espaces à gauche lorsque j'utilise printf?

Par exemple, je veux imprimer "Bonjour" avec 40 espaces le précédant.

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 être clair, je veux exactement 40 espaces imprimés avant chaque ligne.

170voto

Bill the Lizard Points 147311

Si vous souhaitez que le mot "Bonjour" à imprimer dans une colonne qui est de 40 caractères de large, avec des espaces rembourrage de la gauche, utilisez la commande suivante.

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

Qui va vous donner des 35 des espaces, puis le mot "Bonjour". C'est la façon dont vous format des choses quand vous savez comment vous voulez l'échelle de la colonne, mais les modifications de données (enfin, c'est une façon vous pouvez le faire).

Si vous savez que vous voulez exactement 40 places puis un texte, il suffit d'enregistrer l'40 places dans une constante et les imprimer. Si vous avez besoin d'imprimer plusieurs lignes, soit l'utilisation de plusieurs printf des déclarations comme celle-ci, ou de le faire dans une boucle, en changeant la valeur de ptr à chaque fois.

93voto

jk_ Points 1737

J'utilise cette fonction pour mettre en retrait ma sortie (par exemple, pour imprimer la structure arborescente). Le indent est le nombre d'espaces avant la chaîne.

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

62voto

Rece Foc Points 31
int space=40;
printf("%*s",space,"Hello");

Cette déclaration permettra de réserver une colonne de 40 caractères,la chaîne d'impression à la fin de la colonne(pas après la colonne,dans la dernière colonne.Nombre Total de colonnes utilisées seront toujours 40). Même peut être utilisé pour les chiffres et les nombres entiers comme suit

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

Cette méthode d'utilisation de la variable d'espace n'est utile dans les appels de fonctions avec un nombre variable d'espaces est nécessaire.Ces déclarations vont encore travailler avec des entiers constants comme suit

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

Espérons que cela aide quelqu'un comme moi à l'avenir.

26voto

SoapBox Points 14183

Si vous voulez exactement 40 places avant de la chaîne, alors vous devriez faire:

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

Si c'est trop sale, vous pouvez le faire (mais il sera plus lent qu'en tapant manuellement l'40 places): printf("%40s%s", "", myStr );

Si vous voulez la chaîne pour être alignés en colonne 40 (qui est, jusqu'à 39 places de procéder de telle sorte que le droit de la plupart des caractères est dans la colonne 40) puis faire ceci: printf("%40s", myStr);

Vous pouvez aussi mettre "à" 40 espaces Après que la chaîne en faisant: printf("%-40s", myStr);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X