Как объединить string и int в C?


мне нужно сформировать строку, внутри каждой итерации цикла, который содержит индекс цикла 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;
}

Я пробовал использовать различные комбинации strcat и itoa не повезло.

3 54

3 ответа:

строки-это тяжелая работа в C.

int main()
{
   int i;
   char buf[12];

   for (i = 0; i < 100; i++) {
      sprintf(buf, "pre_%d_suff", i); // puts string into buffer
      printf("%s\n", buf); // outputs so you can see it
   }
}

The 12 достаточно байт для хранения текста "pre_" текст "_suff" строка из двух символов ("99") и нулевой Терминатор, который идет в конце строковых буферов C.

этой расскажу вам, как использовать sprintf, но я предлагаю хорошую книгу C!

использовать sprintf (или snprintf если, как я вы не можете рассчитывать) с форматом строки "pre_%d_suff".

для чего это стоит, с itoa / strcat вы могли бы сделать:

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

посмотреть snprintf или, если расширения GNU в порядке,asprintf (который будет выделять память для вас).