web-dev-qa-db-fra.com

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

61
john

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");
5
Steve Jessop

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

0
vanza