int procurarMatriculaLista(tipoEspera listaDeEspera[], int ClistaDeEspera, char matricula[])
{
int i, pos= -1;
for(i = 0; i<ClistaDeEspera; i++)
{
printf("coock");
if(strcmp(listaDeEspera[i].matricula, matricula) == 0)
{
pos=i;
i=ClistaDeEspera;
}
}
return pos;
}
它没有错误,但只要我调用此函数,程序就会崩溃。为什么呢?
答案 0 :(得分:3)
如果它在该函数中崩溃,最可能的原因是赋予strcmp
的参数导致它失败。例如,如果它们实际上不是C风格的字符串,或者您传入的长度值(ClistaDeEspera
)对于实际数组来说太大了。
因此,您需要检查listaDeEspera[i].matricula
i
范围从0
到ClistaDeEspera - 1
的范围,以及matricula
。
很可能其中一个值不是您认为的那样。
顺便说一句,通过摆脱store-position-and-force-loop-end方面,你的代码可以变得“更干净”。使用这样的一小段代码,多个返回点对可读性没有实际的不利影响:
int procurarMatriculaLista(tipoEspera listaDeEspera[], int ClistaDeEspera, char matricula[]) {
for (int i = 0; i < ClistaDeEspera; i++)
if (strcmp (listaDeEspera[i].matricula, matricula) == 0)
return i;
return -1;
}