/ / Warum erhalte ich "FEHLER: Anfrage nach Stringlänge und Name eines Mitglieds in einer Struktur oder Union"? - c, Datenstrukturen, Stapel, Struktur

Warum bekomme ich "ERROR: Anfrage für Mitglied stringLength und Namen in etwas nicht eine Struktur oder Union"? - c, Datenstrukturen, Stapel, Struktur

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 № 1

Es 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.