Printf à gauche avec des espaces

Comment puis-je pad une chaîne avec des espaces sur la gauche lors de l'utilisation de printf?

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

En outre, 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.

85
demandé sur titaniumdecoy 2008-11-16 06:32:31

4 réponses

Si vous voulez que le mot "Bonjour" soit imprimé dans une colonne de 40 caractères de large, avec des espaces qui remplissent la gauche, utilisez ce qui suit.

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

Cela vous donnera 35 espaces, puis le mot "Bonjour". C'est ainsi que vous formatez des choses quand vous savez à quelle largeur vous voulez la colonne, mais les données changent (Eh bien, c'est une façon de le faire).

Si vous savez que vous voulez exactement 40 espaces alors du texte, enregistrez simplement les 40 Espaces Dans une constante et imprimez-les. Si vous avez besoin d'imprimer plusieurs lignes, soit utiliser plusieurs printf instructions comme celle ci-dessus, ou le faire dans une boucle, en changeant la valeur de ptr à chaque fois.

92
répondu Bill the Lizard 2008-11-16 03:42:40

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

void print_with_indent(int indent, char * string)
{
    printf("%*s%s", indent, "", string);
}
53
répondu jk_ 2017-10-01 15:20:50
int space=40;
printf("%*s",space,"Hello");

Cette instruction va réserver une colonne de 40 caractères, Imprimer la chaîne à la fin de la colonne(pas après la colonne,dans les dernières colonnes.Nombre total de colonnes utilisées sera toujours 40). Idem peut être utilisé pour les chiffres et les entiers comme suit

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

Cette méthode d'utilisation des espaces variables est utile dans les appels de fonctions où un nombre variable d'espaces est requis.Ces instructions fonctionneront toujours avec des entiers constants comme suit

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

Espère que cela aide quelqu'un comme moi avenir.

25
répondu Rece Foc 2014-03-28 15:07:43

Si vous voulez exactement 40 espaces avant la chaîne, vous devriez simplement faire:

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

Si c'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 voulez que la chaîne soit alignée à la colonne 40 (c'est-à-dire qu'elle ait jusqu'à 39 espaces pour que le caractère le plus à droite soit dans la colonne 40), Faites ceci: printf("%40s", myStr);

Vous pouvez également mettre" jusqu'à " 40 espaces après la chaîne en faisant: printf("%-40s", myStr);

15
répondu SoapBox 2011-11-24 21:16:40