如何修复“分段错误(核心已转储)”?

时间:2019-10-22 19:33:25

标签: c

我正在尝试执行此代码,编译部分正常,而前半部分也正常。我看不到我尝试访问未分配给阵列的内存的地方

#include <stdio.h>

int main(void){
    int a[100], b[100], c[100], cont = 0, ind = 0, temp;

    printf("Insert a integer number\n");

    do{
        printf("X = ");
        scanf("%d", &temp);
        if(temp >= 0)
            a[cont] = temp;
        cont++;
    }
    while(cont < 100 && temp > 0);

    for(int i = 0; i < 100; i++){
        for(int j = 0; j < 100; j++){
            if(a[i] == b[j])
                c[ind]++;
            else{
                b[ind] = a[i];
                c[ind] = 1;
                ind++;
            }
        }
    }

    printf("Exist %d different number in the list", ind);

    for(int i = 0; i <= ind; i++){
        printf("Number %d appears %d times", b[i], c[i]);
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

您的变量ind可能会超出100,因此a[ind](与bc类似)可能是超出范围的访问。

当您在代码中写入a[i] == b[j]时,您正在读取未初始化的内存,因为您从未按照注释中Ry-的说明初始化b