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 № 1C’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.