134 votes

Que signifie "%.*s" dans printf ?

J'ai un extrait de code dans lequel il y a un

 printf("%.*s\n")

que signifie le %.*s ?

136voto

AusCBloke Points 10179

Vous pouvez utiliser un astérisque ( * ) pour passer le spécificateur de largeur/précision à printf() , plutôt que de le coder en dur dans la chaîne de format, c'est-à-dire

 void f(const char *str, int str_len)
{
  printf("%.*s\n", str_len, str);
}

12voto

rerun Points 15285

Je ne pense pas que le code ci-dessus soit correct mais (selon cette description de printf() ) le .* signifie

La largeur n'est pas spécifiée dans la chaîne de format, mais en tant qu'argument de valeur entière supplémentaire précédant l'argument qui doit être formaté.'

C'est donc une chaîne avec une largeur passable comme argument.

10voto

Josh Points 6771

Voir : http://www.cplusplus.com/reference/clibrary/cstdio/printf/

.* La précision n'est pas spécifiée dans la chaîne de format, mais en tant qu'argument de valeur entière supplémentaire précédant l'argument qui doit être formaté.

s Chaîne de caractères

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