J'ai besoin de former une chaîne, à l'intérieur de chaque itération de la boucle, qui contient l'index de la boucle i
:
for(i=0;i<100;i++) {
// Shown in Java-like code which I need working in c!
String prefix = "pre_";
String suffix = "_suff";
// This is the string I need formed:
// e.g. "pre_3_suff"
String result = prefix + i + suffix;
}
J'ai essayé d'utiliser diverses combinaisons de strcat
et itoa
sans succès.
Les cordes sont un travail difficile en c.
int main()
{
int i;
char buf[12];
for (i = 0; i < 100; i++) {
snprintf(buf, 12, "pre_%d_suff", i); // puts string into buffer
printf("%s\n", buf); // outputs so you can see it
}
}
Le 12
est suffisant octets pour stocker le texte "pre_"
, le texte "_suff"
, une chaîne de deux caractères maximum ("99"
) et le terminateur NULL qui passe à la fin des mémoires tampons de chaîne C.
This vous dira comment utiliser snprintf
, mais je suggère un bon livre en C!
Utilisez sprintf
(ou snprintf
si vous ne pouvez pas compter comme moi) avec la chaîne de formatage "pre_%d_suff"
.
Pour ce que cela vaut, avec itoa/strcat, vous pouvez faire:
char dst[12] = "pre_";
itoa(i, dst+4, 10);
strcat(dst, "_suff");