这是一个简单的代码,希望我搜索加起来等于目标值的整数对,但是我看不出它有什么问题。请帮忙?!
#include<stdio.h>
int main(void) {
int sortedarr[20], targetsum, mysum, i=0, k=19, count=0; /* Declaring variables */
printf("\nEnter target value sum: ");
scanf("%d", &targetsum);
printf("Enter sorted array: ");
scanf("%s", &sortedarr[20]);
while(k>i) {
mysum=sortedarr[k]+sortedarr[i];
if(mysum==targetsum) {
printf("(%d, %d)", sortedarr[i], sortedarr[k]);
i++;
k+=-1;
count++;
}
else if(mysum>targetsum)
k+=-1;
else if(mysum<targetsum)
i++;
}
if(count==0)
printf("No pairs of integers");
return 0;
}
最佳答案
scanf("%s", &sortedarr[20])
尝试从最后一个元素开始将字符串读入sortedarr
。用户输入的字符数超过sizeof(int)
时,就会导致分段错误。
您想要做的是这样的:
for (c=0; c < 20; c++) {
scanf("%d", &sortedarr[c]);
}
关于c - 堆栈损坏的阵列/段错误?在C,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14670068/