我正试图将一个大数字(10^6(存储到一个数组中。我首先尝试将输入作为字符串,然后将其存储在一个整数数组中。这是代码:
#include<stdio.h>
#include<string.h>
#define MAX 1000000
int main()
{
char ip[MAX];
int num[MAX];
int ch,i=0;
while((ch = getchar()) !='n') {
ip[i++] = ch;
}
for(i = 0;i<=strlen(ip);i++) {
num[i] = ip[i]-48;
}
return 0;
}
当我为MACRO MAX使用一个小数字时,这很好,例如100。但是我得到了一个大数字的错误。我正在使用netbeans。我也在vscode中尝试过,但他们的"我得到了Cygwin堆栈转储错误"。
strlen()
,需要一个NULL终止的字符数组,这意味着您在while循环后缺少一个\0。
这也容易发生溢出,因为您没有检查i值是否小于MAX-1。
在你的while循环之后:
ip[i] = 0
或在声明时
char ip[MAX] = {0}