Как объединить строки и 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 без удачи.

Ответ 1

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

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

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

Ответ 2

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

Для чего это стоит, с помощью itoa/strcat вы можете сделать:

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

Ответ 3

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

Ответ 4

возможно, это работает:

int num = 1;
char str1[] = "something";
char str2[] = num;
str1 = str1 str2;

просто попробуйте!

Ответ 5

#include < string>
#include < sstream>
#include < iostream>
#include < fstream> 
int main(){
ofstream fileHandle;
stringstream fileName;  
myInt = 100;
fileName << "filename_out_";
fileName << myInt << ".log";
fileHandle.open(fileName.str().c_str());
fileHandle << "Writing this to a file.\n";
fileHandle.close();
return 0;
}

//приветствует парней