是否可以使用toString运算符,或者如何将数字转换为char数组。
答案 0 :(得分:4)
int myNumber = 27; /* or what have you */
char myBuffer[100];
snprintf(myBuffer, 100, "%d", myNumber);
您需要考虑几个因素。谁提供内存来保存字符串?你需要多长时间等等? (在它上面是一个100字节的堆栈缓冲区,这比打印的任何整数值都要大。)
最佳答案:开始使用Java。或Javascript,或C#,或几乎任何东西除了C.只有老虎这样说谎。
答案 1 :(得分:2)
使用sprintf()
功能。
答案 2 :(得分:2)
sprintf()
被认为是不安全的,因为它可能导致缓冲区溢出。如果它可用(并且在许多平台上),则应使用snprintf()
代替。
请考虑以下代码:
#include <stdio.h>
int main()
{
int i = 12345;
char buf[4];
sprintf(buf, "%d", i);
}
这会导致缓冲区溢出。因此,您必须将缓冲区过度分配到int
的最大大小(作为字符串),即使您需要更少的字符,因为您可能会溢出。相反,如果您使用snprintf()
,则可以指定要写入的字符数,并且只会截断该数字。
#include <stdio.h>
int main()
{
int i = 12345;
char buf[4];
snprintf(buf, 4, "%d", i);
//truncates the string to 123
}
请注意,在任何一种情况下,都应该注意为任何有效输出分配足够的缓冲区空间。只是snprintf()
为您提供安全网,以防您没有考虑缓冲区溢出的边缘情况。