Как объединить строки и 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;
}
//приветствует парней