Je ne comprends pas ce que le %s
et d%
faire dans ce code C:
for (i=0;i<sizeof(code)/sizeof(char*); i++) {
printf("%s%d%s%d\n", "Length of String ", i, " is ", strlen(code[i]));
str = code[i];
printf("%s%d%s%c\n","The first character in string ", i, " is ", str[0]);
}
Je suis nouveau dans le langage C et ma formation est en Java.
%s%d%s%d
symboles indiquent?+
?La famille de fonctions printf () utilise %
caractère en tant qu'espace réservé. Lorsqu'un %
est rencontré, printf lit les caractères suivant le %
pour déterminer quoi 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 Wikipedia pour une belle image: chaîne au format printf
Le \n
à la fin de la chaîne correspond à un caractère de retour à la ligne/retour à la ligne.
La notation% s'appelle 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 chercher ici: http://google.com/search?q=printf+format+specifiers
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 désigne les espaces réservés pour les variables/paramètres suivants.
Par exemple, %s
indique que vous vous attendez à ce que String
soit votre premier paramètre d’impression.
Java a aussi un printf
, qui est très similaire.
% d est imprimé comme un int% s est imprimé comme une chaîne% f est imprimé comme une virgule flottante
Il convient de noter qu'il est incorrect de dire que ceci est différent de Java. Printf représente le format d'impression. Si vous imprimez au format 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 en Java!
"%s%d%s%d\n"
est la chaîne de format; il indique à la fonction printf
comment formater et afficher le résultat. N'importe quoi dans la chaîne de format qui n'a pas de %
immédiatement devant est affiché tel quel.
%s
et %d
sont des spécificateurs de conversion; ils disent à printf
comment interpréter les arguments restants. %s
indique à printf
que l'argument correspondant doit être traité comme une chaîne (en langage C, une séquence terminée par 0 de char
); le type de l'argument correspondant doit être char *
. %d
indique à printf
que l'argument correspondant doit être traité comme une valeur entière; le type de l'argument correspondant doit être int
. Comme vous venez d'un fond Java, il est important de noter que printf
(comme d'autres fonctions variadiques) s'appuie sur vous pour le dire quels sont les types d'arguments restants Si la chaîne de format était "%d%s%d%s\n"
, printf
tenterait de traiter "Length of string"
en tant que valeur entière et i
en tant que chaîne, avec des résultats tragiques.
% 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 parcourir 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 null dans chaque cas.
Les virgules ne font que 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 situé au début.
Le premier argument de printf
est une chaîne d'identifiants.
% s fait référence à une chaîne% d fait référence à un entier% c fait référence à un caractère. C’est pourquoi:% s% d% s% c\n imprime la chaîne "Le premier caractère de la ligne",% d imprime i,% s imprime "est" et% c imprime str [0].
% s% d% s% d\n est une chaîne de formatage. 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 d'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 avec + ou, bien que vous puissiez combiner différentes sorties sur une seule ligne en utilisant les chaînes de format appropriées (l'utilisation des chaînes de format permet de formater les informations de sortie.).
% (lettre) indique le type de format du texte de remplacement. % s spécifie une chaîne,% d un entier et% c un caractère.