Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修改Nodo C?_C_Algorithm_List_Nodes - Fatal编程技术网

如何修改Nodo C?

如何修改Nodo C?,c,algorithm,list,nodes,C,Algorithm,List,Nodes,我有这个函数,我有一个while循环的问题 _nodoMaterias *modificarMateria(char materia[], _nodoMaterias *apuntador) { printf("\nENTRO"); if (!listaVacia(apuntador)) { printf("\nENTRO1"); _nodoMaterias *apuntadorAuxiliar; apuntadorAux

我有这个函数,我有一个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的条件更改为
=
,因为当两个字符串匹配时,它返回零。如果,则检查应放在内部
,而不是外部
,同时

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

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

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

很难说清楚,但进入while循环的唯一方法是apuntador->material是否包含一个值,以及它是否与material不同。那你怎么知道他们持有什么?更改
printf(“\nTRO1”)
printf(“\nTRO1:%s,%s”,apuntador?apuntador->名称:“空”,物料)并告诉我们打印的内容。它打印“ENTRO1:CALCULO,CALCULO”好的,就像我说的,如果字符串不同,它只进入while循环。它们没有区别,因此不会进入while循环。如果你能描述一下你想让它做什么,也许我们可以找出如何让它做。我想修改我列表中的节点,例如我的列表中有两个节点,一个是微积分,另一个是物理,然后我问用户你想修改哪个节点?当用户写入要修改的节点时,我的代码必须能够修改该节点。很难说清楚,但进入while循环的唯一方法是apuntador->material是否包含值,以及它是否与material不同。那你怎么知道他们持有什么?更改
printf(“\nTRO1”)
printf(“\nTRO1:%s,%s”,apuntador?apuntador->名称:“空”,物料)并告诉我们打印的内容。它打印“ENTRO1:CALCULO,CALCULO”好的,就像我说的,如果字符串不同,它只进入while循环。它们没有区别,因此不会进入while循环。如果你能描述一下你想让它做什么,也许我们可以找出如何让它做。我想修改我列表中的节点,例如我的列表中有两个节点,一个是微积分,另一个是物理,然后我问用户你想修改哪个节点?当用户写入要修改的节点时,“我的代码”必须能够修改此节点。