gpt4 book ai didi

c++ - 更正段错误

转载 作者:行者123 更新时间:2023-11-28 00:21:45 24 4
gpt4 key购买 nike

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
using namespace std;

int main(){
int i=0,n,h,k;
k = (int)pow(10,5);
int c[k];
scanf("%d%d",&n,&h);

if((n>=1 && n<=(int)pow(10,5)) && (h>=1 && h<=(int)pow(10,8))){
int arr[n];

do{
scanf("%d",&arr[i]);
if(arr[i] > h){
cout<<"Error !";
exit(1);
}
i++;
}while(i!=(n-1));

i=0;

do{ /*The fault occurs somewhere here, probably*/
scanf("%d",&c[i]);
i++;
}while(c[i]!=0);

if(i>(int)pow(10,5)){
cerr<<"Error !";
exit(0);
}

}
return 0;
}

我正在尝试使用 scanf() 在不同的线路上从控制台接受一些数字(对数字的上限和下限有一定的限制)——问题是我在某处遇到了段错误我在哪里发表评论 - 我似乎无法弄清楚错误发生在哪里 - 有人可以指出我犯的错误吗?

最佳答案

我觉得问题出在这里

do{                  
scanf("%d",&c[i]);
i++;
}while(c[i]!=0);

考虑 i 的当前值是 0 并且您在 c[0] 处输入值之后 i 的递增值。现在 i 变成 1 然后你检查 c[1] != 0 这就是问题所在

使用

i=-1;

do{
i++;
scanf("%d",&c[i]);
}while(c[i]!=0);

关于c++ - 更正段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27163858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com