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

时间:2011-03-02 19:06:12

标签: c string

我需要在循环的每次迭代中形成一个字符串,其中包含循环索引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的各种组合,但没有运气。

3 个答案:

答案 0 :(得分:91)

字符串在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终止符在C字符串缓冲区的末尾。

This会告诉您如何使用snprintf,但我推荐一本好的C书!

答案 1 :(得分:5)

使用格式字符串sprintf snprintf(或"pre_%d_suff",如果像我一样,你无法计算)。

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

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

答案 2 :(得分:0)

查看snprintf,或者,如果GNU扩展正常,asprintf(将为您分配内存)。