我有一个任务要求我首先设置整数数组来存储任意大的数字。通过使用 int 数组的每个元素,我可以为每个元素保留一个数字,因为 int 变量类型是 32 位,并且在失败之前最多只能达到大约 20 亿。我知道还有其他使用 BigInt 的库,但我想创建自己的数组。
我测试了我的代码,但它似乎不接受超过 9 位的值,直到它开始失败。
int * toArray(int, int);
int main()
{
int n, *res, counter, i;
printf("Input: ");
scanf("%d", &n);
while(n>0){
n/=10;
counter++;
}
res = toArray(n, counter);
for(i=1;i<=counter;i++){
printf("%d", *(res)+i);
}
printf("\n");
}
int * toArray(int n, int counter)
{
int i;
int *numberArray = malloc(sizeof(int) * counter);
for(i=0; i< counter; i++)
{
numberArray[i] = n % 10;
}
return numberArray;
}
我希望至少能够接受接近二十位数。我知道这可以用 int 数组来完成,尽管 char 数组(或字符串)也是可能的。但我想改用 int 数组。任何有助于理解为什么它在 9 位数左右失败以及过去的建议将不胜感激。谢谢你。