Que signifient %s et % d dans printf dans le langage C? [fermé]
Je ne comprends pas ce que font les %s
et d%
dans ce code C:
for (i=0;i<sizeof(code)/sizeof(char*); i++) {
printf("%s%d%s%dn", "Length of String ", i, " is ", strlen(code[i]));
str = code[i];
printf("%s%d%s%cn","The first character in string ", i, " is ", str[0]);
}
Je suis nouveau dans le langage C et mon arrière-plan est en Java.
- que désignent les symboles
%s%d%s%d
? - Pourquoi y en a-t-il tant?
- la virgule est-elle utilisée ici pour la concaténation au lieu d'un
+
?
9 réponses
La famille de fonctions printf() utilise le caractère %
comme espace réservé. Quand un %
est rencontré, printf lit les caractères suivant le %
pour déterminer ce qu'il faut faire:
%s - Take the next argument and print it as a string
%d - Take the next argument and print it as an int
Voir cet article de Wikipedia pour une belle image: chaîne de format printf
Le \n
à la fin de la chaîne est pour un caractère retour à la ligne/retour chariot.
% notation est appelé un spécificateur de format. Par exemple, %d indique à printf() d'imprimer un entier. % s pour imprimer une chaîne (char *), etc. Vous devriez vraiment le regarder ici: http://google.com/search?q=printf + format + spécificateurs
Non, les virgules ne sont pas utilisées pour la concaténation de chaînes. Les virgules servent à séparer les arguments passés à une fonction.
Le premier argument indique des espaces réservés pour les variables / paramètres qui suivent.
Par exemple, %s
indique que vous vous attendez à ce qu'un String
soit votre premier paramètre d'impression.
Java a aussi un printf
, ce qui est très similaire.
%D est imprimé en tant qu'int %s est imprimé sous forme de chaîne %f est imprimé en virgule flottante
, Il convient de noter qu'il est inexact de dire que c'est différent de Java. Printf signifie print format, si vous faites une impression formatée en Java, c'est exactement la même utilisation. Cela peut vous permettre de résoudre des problèmes intéressants et nouveaux en C et Java!
Le premier argument de printf
est une chaîne d'identificateurs.
%s fait référence à une chaîne %d fait référence à un entier %c fait référence à un caractère. Par conséquent: %s%d%S % c \ n imprime la chaîne "le premier caractère de sting ", %d imprime i, %s imprime " is " Et %c imprime str[0].
%s est pour la chaîne %d est pour décimal (ou int) %c est pour le caractère
Il semble être en train de mâcher un tableau de caractères et d'Imprimer la chaîne existante à partir de chaque position suivante. Les chaînes s'arrêteront à la première valeur nulle dans chaque cas.
Les virgules sont juste séparer les arguments d'une fonction qui prend un nombre variable d'arguments; ce nombre correspond au nombre de % args dans le descripteur de format à l'avant.
"%s%d%s%d\n"
est la chaîne de format; il indique à la fonction printf
Comment formater et afficher la sortie. Tout ce qui est dans la chaîne de format qui n'a pas de %
immédiatement devant est affiché tel quel.
%s
et {[4] } sont des spécificateurs de conversion; ils indiquent à printf
Comment interpréter les arguments restants. %s
indique à printf
que l'argument correspondant doit être traité comme une chaîne (en C, une séquence terminée à 0 de char
); le type de l'argument correspondant doit être char *
. %d
dit printf
que l'argument est traité comme un entier de valeur; le type de l'argument correspondant doit être int
. Puisque vous venez d'un arrière-plan Java, il est important de noter que printf
(comme les autres fonctions variadiques) s'appuie sur Vous pour lui dire quels sont les types des arguments restants. Si la chaîne de format était "%d%s%d%s\n"
, printf
tenterait de traiter "Length of string"
comme une valeur entière et i
comme une chaîne, avec des résultats tragiques.
%(lettre) indique le type de format du texte de remplacement. %s spécifie une chaîne, %d un entier et %c un caractère.
%s%d%S%D\n est une chaîne de format. Il est utilisé pour spécifier comment les informations sont formatées sur une sortie. ici, la chaîne de format est censée imprimer une chaîne suivie d'un chiffre suivi d'une chaîne, puis à nouveau un chiffre. Le dernier symbole \n représente le retour chariot qui marque la fin d'une ligne. En C, les chaînes ne peuvent pas être concaténées par + ou, bien que vous puissiez combiner différentes sorties sur une seule ligne en utilisant les chaînes de format appropriées (l'utilisation de chaînes de format consiste à formater la sortie info.).