在Ansi C中使用toString转换数字

时间:2010-02-17 06:44:31

标签: c arrays char tostring

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

3 个答案:

答案 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()为您提供安全网,以防您没有考虑缓冲区溢出的边缘情况。