/ / Pourquoi est-ce que je reçois “ERROR: demande de membre stringLength et nom dans quelque chose qui n'est pas une structure ou une union”? - c, structures de données, pile, structure

Pourquoi est-ce que je reçois “ERROR: demande de membre stringLength et nom dans quelque chose qui n'est pas une structure ou une union”? - c, structures de données, pile, structure

J'essaie d'implémenter une pile et ses propriétés de base (push, pop, etc.) mais je reçois l'erreur mentionnée dans le titre:

ERREUR: demande de membre stringLength et nom dans quelque chose qui n'est pas une structure ou une union

#include <stdio.h>
#include <stdlib.h>


typedef struct stackElement
{
int stringLength;
char *name;

} StackElement;

int Push(StackElement **stack);



int main()
{
StackElement *stack = NULL;
int index = 0;

index = Push(&stack);


printf("The top word of the stack is %sn", stack[index].name);


system("PAUSE");

return 0;
}



int Push(StackElement **stack)
{
char *c;
int size = 0;
int i = 0;

*stack = malloc(sizeof(StackElement));

printf("Please enter a word in the stackn");
scanf("%s",&c);

size = sizeof(c)/sizeof(char);

*stack[i].stringLength = size;// <---- ERROR

*stack[i].name = c ;// <----- ERROR

return i;

}

Réponses:

4 pour la réponse № 1

C’est un problème de priorité des opérateurs.

. a une priorité plus élevée que *, alors:

*stack[i].stringLength

Est le même que

*(stack[i].stringLength)

Alors que vous voulez réellement

(*stack[i]).stringLength

Ajoutez simplement les crochets comme je l’ai fait dans le dernier exemple et cela devrait fonctionner.