在我的代码中:
int nAlunos, nNotas;
/*size input*/
scanf("%d", &nAlunos);
scanf("%d", &nNotas);
/*arrays*/
int ordenador [nAlunos];
char listaNomes [nAlunos][16];
float listaNotas [nAlunos][nNotas+1];
/*non-arrays*/
int i, k;
/*input*/
for(i = 0; i < nAlunos; i++){
scanf("%s", listaNomes[i]);
for(k = 1; k <= nNotas; k++){
scanf("%f", &listaNotas[i][k]);
}
}
/*sum of grades / number os grades for each person*/
for(i = 0; i < nAlunos; i++){
listaNotas[i][0] = 0;
for(k = 1; k <= nNotas; k++)
listaNotas[i][0] += listaNotas[i][k];
listaNotas[i][0] /= nNotas;
}
/*process order on vector*/
for(i = 0; i < nAlunos; i++){
menor = 1111;
for(k = i; k < nAlunos; k++)
if (listaNotas[k][0] < menor)
menor = listaNotas[k][0];
for(k = i; listaNotas[k][0] != menor; k++){}
ordenador[k] = i;
ordenador[i] = k;
}
for(i = 0; i < nAlunos; i++)
printf("%d", ordenador[i]);
我正在尝试填充来自用户的数据表,我可能不会为此类使用指针。
它需要接收呈现的数据:
String1
float1 float2...
String2
.
.
.
运行它时,它运行良好,直到我完成最后一个输入。之后它只是中断执行并返回段错误:11
我试图找到它可能访问不正确内存的位置,但它对我来说没有意义,因为我找不到它。
最佳答案
for(k = i; listaNotas[k][0] != menor; k++){}
以上语句导致数组越界访问!因此出现了段错误
。根据您的功能进行处理。
条件 listaNotas[k][0] != menor
是致命的。
关于c - 段错误 : 11 on c program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159763/