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

我需要在循环的每次迭代内形成一个字符串,其中包含循环索引strcat

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的各种组合,但没有好运。

john asked 2019-10-08T20:28:52Z
3个解决方案
88 votes

字符串在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
   }
}

sprintf有足够的字节来存储文本"pre_",文本"_suff",最多两个字符的字符串("99")和在C字符串缓冲区末尾的NULL终止符。

这将告诉您如何使用sprintf,但我建议您读一本不错的C书!

Lightness Races in Orbit answered 2019-10-08T20:29:16Z
5 votes

使用sprintf(如果像我一样,则不能使用snprintf),格式字符串为"pre_%d_suff"

对于它的价值,使用itoa / strcat可以做到:

char dst[12] = "pre_";
itoa(i, dst+4, 10);
strcat(dst, "_suff");
Steve Jessop answered 2019-10-08T20:29:48Z
0 votes

查看snprintf,或者,如果GNU扩展可以,请查看asprintf(它将为您分配内存)。

vanza answered 2019-10-08T20:30:15Z
translate from https://stackoverflow.com:/questions/5172107/how-to-concatenate-string-and-int-in-c