Ich versuche, einen Stack und seine grundlegenden Eigenschaften (Push, Pop usw.) zu implementieren, erhalte jedoch den Fehler, den ich im Titel erwähnt habe:
FEHLER: Anfrage für Member stringLength und name in einer Struktur oder 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;
}
Antworten:
4 für die Antwort № 1Es handelt sich um ein Problem mit der Operatorpriorität.
.
hat höhere Priorität als *
, damit:
*stack[i].stringLength
Ist das gleiche wie
*(stack[i].stringLength)
Während du eigentlich willst
(*stack[i]).stringLength
Fügen Sie einfach die Klammern wie im letzten Beispiel hinzu, und es sollte funktionieren.