c - 我如何修改 Nodo C?

标签 c algorithm list nodes

我有这个函数,但是while循环有问题

_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”。

我该如何解决这个问题?

最佳答案

如果用户输入的名称与节点的名称匹配,那么你想修改节点,在这种情况下,你需要将strcmp的条件更改为==,因为当两个字符串匹配时它返回零。此外,检查应放在内部 if 中,而不是外部 while:

while (apuntadorAuxiliar != NULL) {
    if (strcmp(apuntadorAuxiliar->nombre, materia) == 0) {
        // modifying the node
    }
}

关于c - 我如何修改 Nodo C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40835439/

相关文章:

javascript - 如何将 "summarize"整数数组转换为具有范围的字符串?

python - 如何迭代文件夹,但只检索文件的最新版本?

c - linux/ext2_fs.h 有什么问题?

c - 在 Linux 中复制文件的最有效方法

c - 节点->指针=指针与使用memcpy的节点->指针

list - 根据元素索引修改列表的元素

python - 根据外部条件更改数据框模型

c - 嵌套for循环逻辑

algorithm - 使用 Lanczos 缩放图像背后的想法是什么?

python - 为什么在 python 中使用 Sublime 实现二进制搜索时无法在控制台上获得结果?