RUN FAILED(运行失败)(退出值1,总时间:2s)



我正试图将一个大数字(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}

最新更新