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