我正在尝试执行此代码,编译部分正常,而前半部分也正常。我看不到我尝试访问未分配给阵列的内存的地方
#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;
}
答案 0 :(得分:1)
您的变量ind
可能会超出100
,因此a[ind]
(与b
,c
类似)可能是超出范围的访问。
当您在代码中写入a[i] == b[j]
时,您正在读取未初始化的内存,因为您从未按照注释中Ry-的说明初始化b
。