Как объединить строки и INT в C? - PullRequest
60 голосов
/ 02 марта 2011

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

91 голосов
/ 02 марта 2011

Струны тяжелая работа в 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
   }
}

Достаточно байтов 12 для хранения текста "pre_", текста "_suff", строки длиной до двух символов ("99") и ограничителя NULL, который идет в конце строковых буферов Си.

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

5 голосов
/ 02 марта 2011

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

Что бы это ни стоило, с itoa / strcat вы можете сделать:

char dst[12] = "pre_";
itoa(i, dst+4, 10);
strcat(dst, "_suff");
0 голосов
/ 02 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...