将int分配给C中的字符串

时间:2011-08-24 08:42:33

标签: c

我需要调用一个接收字符串的函数。 我需要字符串包含整数。 如何使用整数分配字符串?

谢谢, 江户科恩

6 个答案:

答案 0 :(得分:3)

您正在寻找snprintf()功能:

http://libslack.org/manpages/snprintf.3.html

答案 1 :(得分:1)

使用snprintf制作所需的字符串。

答案 2 :(得分:0)

您可以使用sprintf执行此操作:

sprintf(buffer, "%d", 123);

请注意,您需要确保缓冲区有足够的空间分配

答案 3 :(得分:0)

试试这个:

int number = 10;
char mystring[20];
snprintf(mystring, sizeof(mystring), "%d", number);

或者您可以使用itoa但这被认为是不安全的。

答案 4 :(得分:0)

由于便携性原因,请使用链接中建议的itoasprintf

出于安全原因,

snprintfasprintf

答案 5 :(得分:0)

我想这会起作用

#include <stdlib.h> // for itoa() call
#include <stdio.h>  // for printf() call

int main() {
    int num = 123;
    char buf[5];

    // convert 123 to string [buf]
    itoa(num, buf, 10);

    // print our string
    printf("%s\n", buf);

    return 0;
}

你也可以使用 -

#include <stdio.h>

   int main(void)
   {
      const char base[] = "filename";
      char filename [ FILENAME_MAX ];
      int number = 42;
      sprintf(filename, "%s%d", base, number);
      printf("filename = \"%s\"\n", filename);
      return 0;
   }

虽然记得sprintf()不计算缓冲区溢出。 sprintf()不会刷新任何文件缓冲区,实际上它没有任何与之关联的缓冲区。 sprintf()在字符缓冲区上运行(不完全相同)。如果溢出该缓冲区,则可能导致系统崩溃。

一个更安全的sprintf()版本是snprintf(),遗憾的是它还不是很标准。它以各种形式出现在许多编译器供应商中,并最终在C99中进行了标准化,并有望在下一个C ++标准中将其作为标准C ++的一部分。在那之前,你只需要挖掘它的非标准版本。