我需要调用一个接收字符串的函数。 我需要字符串包含整数。 如何使用整数分配字符串?
谢谢, 江户科恩
答案 0 :(得分:3)
您正在寻找snprintf()
功能:
答案 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)
由于便携性原因,请使用链接中建议的itoa
或sprintf
。
snprintf
或asprintf
答案 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 ++的一部分。在那之前,你只需要挖掘它的非标准版本。