Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 为什么我在尝试将整数拆分为十进制数字时会得到奇怪的输出?_Arrays_C - Fatal编程技术网

Arrays 为什么我在尝试将整数拆分为十进制数字时会得到奇怪的输出?

Arrays 为什么我在尝试将整数拆分为十进制数字时会得到奇怪的输出?,arrays,c,Arrays,C,数字被完美地分割,但是当分配给char数组时,似乎有一些内存损坏。在每一个大于或等于10000的数字中,10000处的数字被破坏,并给出类似的输出: ► {‼░ ↔ @ A.■ ♣ 不返回位数,但返回整数的大小(字节)。这意味着它返回4,而不是10(或更多)。sizeof(int)不是nb的小数位数,以防这是您所期望的。您已经有了一个线索,在位数方面,小于10000的数字与大于等于10000的数字之间的主要区别是什么?请尝试输入prin

数字被完美地分割,但是当分配给char数组时,似乎有一些内存损坏。在每一个大于或等于10000的数字中,10000处的数字被破坏,并给出类似的输出:

►     {‼░       ↔             @     A.■    ♣

不返回位数,但返回整数的大小(字节)。这意味着它返回4,而不是10(或更多)。

sizeof(int)
不是
nb
的小数位数,以防这是您所期望的。您已经有了一个线索,在位数方面,小于10000的数字与大于等于10000的数字之间的主要区别是什么?请尝试输入
printf(“int的大小是%zu\n”,sizeof(int));
作为函数中的第一条语句,要获取将十进制数字存储为字符串所需的字节数,请使用
(int)ceil(log10(256)*sizeof(int))+1
+1
用于存储最后的
\0
字节)…您需要
#包括
,在您的案例中,您似乎没有存储最后的
\0
字节,但99%的时间您希望:)
#include <unistd.h>

void ft_putnbr(int nb)
{
    char character[sizeof(int)];
    int i;

    i = 0;
    while (nb > 0)
    {
        character[i] = (nb % 10) + 48; // Split up the number into characters
        nb /= 10;   // Remove the number at the ones
        i++;
    }
    while (i >= 0)
    {
        write(1, &character[i - 1], 1);
        i--;
    }
}

int main (void)
{
    ft_putnbr(2147483647);
}
sizeof(int)