95 votes

Comment concaténer string et int en C?

J'ai besoin de former une chaîne, à l'intérieur de chaque itération de la boucle, qui contient l'index de 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.

153voto

Lightness Races in Orbit Points 122793

Les cordes sont un travail difficile en C.

 #include <stdio.h>

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 suffisamment d'octets pour stocker le texte "pre_" , le texte "_suff" , une chaîne de deux caractères maximum ( "99" ) et le terminateur NULL qui va à la fin des tampons de chaîne C.

Cela vous dira comment utiliser snprintf , mais je suggère un bon livre C !

9voto

Steve Jessop Points 166970

Utilisez sprintf (ou snprintf si comme moi vous ne savez pas compter) avec la chaîne de format "pre_%d_suff" .

Pour ce que ça vaut, avec itoa/strcat tu peux faire :

 char dst[12] = "pre_";
itoa(i, dst+4, 10);
strcat(dst, "_suff");

1voto

vanza Points 4391

Regardez snprintf ou, si les extensions GNU sont OK, asprintf (qui allouera de la mémoire pour vous).

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