如何在 C 中连接字符串和 int?

我需要在循环的每次迭代中形成一个字符串,其中包含循环索引 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;
}

我尝试使用 strcatitoa的各种组合,但没有成功。

225219 次浏览

Use sprintf (or snprintf if like me you can't count) with format string "pre_%d_suff".

For what it's worth, with itoa/strcat you could do:

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

Look at snprintf or, if GNU extensions are OK, asprintf (which will allocate memory for you).

Strings are hard work in 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
}
}

The 12 is enough bytes to store the text "pre_", the text "_suff", a string of up to two characters ("99") and the NULL terminator that goes on the end of C string buffers.

This will tell you how to use snprintf, but I suggest a good C book!