Question

Dans certains codes que je dois gérer, j'ai vu un spécificateur de format % * s . Quelqu'un peut-il me dire en quoi cela consiste et pourquoi il est utilisé?

Voici un exemple d'utilisation:

fprintf(outFile, "\n%*s", indent, "");
Était-ce utile?

La solution

Il est utilisé pour spécifier de manière dynamique la largeur du champ. :

  
      
  • La largeur n'est pas spécifiée dans la chaîne de format, mais en tant que valeur supplémentaire.   argument de valeur entier précédant le   argument qui doit être formaté.
  •   

so "indent &"; spécifie la quantité d'espace à allouer pour la chaîne qui la suit dans la liste de paramètres.

Alors,

printf("%*s", 5, "");

est identique à

printf("%5s", "");

C'est un bon moyen de mettre des espaces dans votre fichier, en évitant une boucle.

Autres conseils

N'utilisez pas "% * s " sur un tampon qui n'est pas terminé par NULL (emballé) en pensant qu'il n'imprimera que "durée" champ.

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

  

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 à formater.

Exemple: printf ("% * s", 4, myValue); correspond à printf ("% 4s", myValue); . . p>

Le spécificateur de format% 4s génère une chaîne d'une largeur de champ de 4 & # 8212; autrement dit, printf affiche la valeur avec au moins 4 positions de caractères.

Si la valeur à afficher est inférieur à 4 caractères sur 1, la valeur est justifié à droite dans le champ par défaut.

Si la valeur est supérieure à 4 caractères sur la largeur, la largeur de champ est étendue pour accueillir le nombre de caractères approprié.

Pour justifier la valeur à gauche, utilisez un entier négatif pour spécifier la largeur du champ.

Références: Java & # 8482; Comment programmer (premiers objets), Dixième édition

* Force fprintf à remplir la sortie jusqu'à ce qu'elle ait une largeur de n caractères, où n est une valeur entière stockée dans l'argument d'une fonction précédant celui représenté par le type modifié.

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top