1
我有這個功能,我有一個while循環如何修改Nodo C?
_nodoMaterias *modificarMateria(char materia[], _nodoMaterias *apuntador)
{
printf("\nENTRO");
if (!listaVacia(apuntador))
{
printf("\nENTRO1");
_nodoMaterias *apuntadorAuxiliar;
apuntadorAuxiliar = apuntador;
while (apuntadorAuxiliar != NULL && strcmp(apuntadorAuxiliar->nombre, materia) != 0)
{
printf("\nENTRO2");
if (apuntadorAuxiliar != NULL && strcmp(apuntadorAuxiliar->nombre, materia) != 0)
{
char nombre[30];
char profesor[30];
char tipoDeMateria[20];
char horasSemanales[10];
printf("\nINGRESE LOS NUEVOS DATOS DE LA MATERIA");
printf("NOMBRE: ");
fflush(stdin);
scanf("%s",nombre);
printf("PROFESOR: ");
fflush(stdin);
scanf("%s",profesor);
printf("TIPO DE MATERIA: ");
fflush(stdin);
scanf("%s",tipoDeMateria);
printf("HORAS SEMANALES: ");
fflush(stdin);
scanf("%s",horasSemanales);
fflush(stdin);
strcpy(apuntadorAuxiliar->nombre, nombre);
strcpy(apuntadorAuxiliar->profesor, profesor);
strcpy(apuntadorAuxiliar->tipoDeMateria, tipoDeMateria);
strcpy(apuntadorAuxiliar->horasSemanales, horasSemanales);
apuntadorAuxiliar->siguiente = NULL;
}
apuntadorAuxiliar = apuntadorAuxiliar->siguiente;
}
}
return apuntador;
}
一個問題,當我編譯它,去完善,但是當我使用它,從來沒有在while循環進入,但我不知道爲什麼。
但它打印「ENTRO」和「ENTRO1」。
我該如何解決這個問題?
這很難說清楚,但到while循環的唯一方法是,如果apuntador->材料包含的值,如果是不同的時珍。那麼你怎麼知道他們持有什麼?將printf(「\ nENTRO1」);'改爲'printf(「\ nENTRO1:%s,%s」,apuntador?apuntador-> nombre:「null」,materia);'告訴我們打印什麼。 –
它打印出「ENTRO1:CALCULO,CALCULO」 – ilfredo
好吧,就像我說的,如果字符串不同,它只會進入while循環。它們並沒有不同,所以它不會進入while循環。如果你能描述你想做的事情,也許我們可以想出如何讓它做到這一點。 –