3 votes

Problèmes d'affectation de valeurs aux pointeurs de structure en C ?

Je construis un dictionnaire de listes liées avec une structure, avec chaque nœud de la liste défini comme suit :

typedef struct node node;
struct node
{                                                               
      int key;
      char value[ARRAY_MAX];
      node *next;
};  

Là où je rencontre des problèmes, c'est lorsque j'attribue des valeurs à la clé ou à la valeur dans mes fonctions insert et makedict. J'ai reçu les erreurs suivantes lors de l'affectation :

node* insert(node* start, char* vinput, int kinput) {
    node* temp = start;
    while((temp->next->key < kinput) && temp->next!=NULL) {
        temp=temp->next;
    }
    if(temp->key==kinput) {
        temp->key = kinput;
        return temp;
    } else {
        node* inputnode = (node*)malloc(sizeof(node));
        inputnode->next = temp->next;
        temp->next = inputnode;
        inputnode->key = kinput;   /*error: incompatible types in assignment*/
        inputnode->value = vinput;
        return inputnode;
}

et :

node* makedict(char* vinput, int kinput) {
    node* temp = (node*)malloc(sizeof(node));
    temp->value = vinput;
    temp->key = kinput; /*error: incompatible types in assignment*/
    temp->next = NULL;
    return temp;
}

Je sais que j'ai probablement manqué quelque chose d'incroyablement évident, mais j'ai lu ce code encore et encore sans succès. Toute aide est appréciée.

7voto

Charlie Burns Points 6816

Je pense que la ligne

inputnode->value = vinput;

est ce dont le compilateur se plaint. Essayez

strcpy(inputnode->value, vinput);

Ou, mieux encore, faites en sorte que le champ "valeur" soit un char * et procédez comme suit

inputnode->value = strdup(vinput)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X