2

是否可以使用 toString 运算符,或者如何将数字转换为 char 数组。

4

3 回答 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 回答