将整数转换为数组

时间:2014-03-27 23:22:19

标签: c

到目前为止,我已经编写了几行来将整数转换为数组。

#include <stdio.h>

int main(int argc, char *argv[]){
    int num = 9214;
    int count = 3;
    char numarray[3];
    int temp;

    while(num > 0){
        temp = num % 10;
        numarray[count] = temp;
        num /= 10;
        count--;
    }

    printf("Array: ");
    for(count = 0; count <= 3; count++)
    printf("%d", numarray[count]);
    printf("\n\n");
}

输出为9214.但是,它返回9219。 如果我更改变量 num 5183,它将返回5185。 它将数组的最后一个数字更改为 num 变量的第一个数字。

有没有人知道我搞砸了哪里?

3 个答案:

答案 0 :(得分:4)

char numarray[3];

这个数组有3个元素,而不是4个。

for(count = 0; count <= 3; count++)
    printf("%d", numarray[count]);

printf语句访问数组之外​​的元素(numarray[3],但最后一个元素是numarray[2])。与numarray[count] = temp;循环中的while相同。

要解决您的问题,只需将char numarray[3];更改为char numarray[4];

答案 1 :(得分:0)

numarray太小了。

应该是

char numarray[4];

你的while循环覆盖数组外的内存,你的printf for循环正在查看数组外的内存。

答案 2 :(得分:0)

该数字有4位数,但是你要分配一个大小为3的数组。numarray[3]的赋值是无效的,并且使用该表达式来访问该值,因为它是未定义的行为。

声明数组时,方括号之间的数字指定数组可容纳的最大元素数,最大索引的值。访问权基于零,因此int nums[4];数组中可能的索引值为0,1,2和3.

通常,对于type arr[n]的任何数组,其中type是有效类型而n是文字数字,有效索引值从0变为{{1 }}