这是一个简单的代码,希望我搜索加起来等于目标值的整数对,但是我看不出它有什么问题。请帮忙?!

#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/

10-12 14:47