任意の大きな数値を格納するために、最初に整数配列を設定する必要がある割り当てがあります。int 配列の各要素を使用することで、要素ごとに 1 桁を保持できます。これは、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;
}
せめて20桁近くまで受け付けるようにしたいです。char 配列 (または文字列) も可能ですが、これは int 配列で実行できることを知っています。しかし、代わりに int 配列を使用したかったのです。なぜ9桁前後で失敗するのかを理解する上での助けと、過去に行くための提案をいただければ幸いです。ありがとうございました。