C 在线编译器中的代码显示分段故障程序已完成,退出代码为139

C 在线编译器中的代码显示分段故障程序已完成,退出代码为139,c,C,我试图在联机编译器中编写代码,但它显示分段错误程序已完成,退出代码为139 这是我一直在研究的代码 #包括 void main(){ 整数数组长度,数组[20],和,数组_和=0,j; printf(“输入数组中的元素数”); 扫描频率(“%d”和排列长度); printf(“输入数组”); 对于(int i=0;i您试图在不初始化j的情况下寻址array[j],并且必须小心不要输入大于20的数组,即使没有调试器,这也很有帮助。您的输入/输出和期望的结果是什么?还有,您的代码的逻辑是什么(即,它

我试图在联机编译器中编写代码,但它显示分段错误程序已完成,退出代码为139

这是我一直在研究的代码

#包括
void main(){
整数数组长度,数组[20],和,数组_和=0,j;
printf(“输入数组中的元素数”);
扫描频率(“%d”和排列长度);
printf(“输入数组”);

对于(int i=0;i您试图在不初始化
j
的情况下寻址
array[j]
,并且必须小心不要输入大于
20

的数组,即使没有调试器,这也很有帮助。您的输入/输出和期望的结果是什么?还有,您的代码的逻辑是什么(即,它做什么)?变量
j
从未初始化或设置为任何值,因此在
array[j]
点,
j
可能是一些垃圾值,如-1037927,或任何可能的值,这将导致segfault。
#include<stdio.h>

void main(){
    int arrayLength ,array[20] ,sum , array_sum=0 ,j;
    printf("enter the no of elements in your array");
    scanf("%d" , &arrayLength);
    printf("enter your array");
    for (int i=0 ; i<arrayLength; i++){
        scanf("%d", &array[i]);
    }
    printf("your array is");
    for (int i=0; i < arrayLength; i++){
        printf("%d",array[i]);
    }
    printf("enter the sum");
    scanf("%d" ,&sum);
    for (int i = 0; i < arrayLength; i++) {
        if(array_sum<sum){
            array_sum=array_sum+array[i];
            continue;
        }
        else if(array_sum>sum && i<arrayLength){
            array_sum = array_sum - array[j];
            continue;
            
        }
        else if ( array_sum=sum){
            printf("your sum can be found between array elements %d and %d ", j ,i);
            continue;
        }
        else{
            printf("not in this array");
            
        }
    }
    
}