struct und scanf()
-
Ich moechte mit scanf() Werte in eine Struktur einlesen:
#include <stdio.h> int main(void) { struct struc { int wert1; int wert2; int wert3; }; struct struc struktur, * pstruktur; pstruktur = &struktur; scanf("%i%i%i",&struktur.wert1,&struktur.wert2,&struktur.wert3); /* diese Variante funktioniert */ scanf("%i%i%i",pstruktur->wert1,pstruktur->wert2,pstruktur->wert3); /*diese Variante funktioniert nicht (Compiler meckert) */ return 0; }
scanf() benoetigt ja die Adresse der Argumente, warum funktioniert die Zeigervariante (mit Pfeiloperator) nicht.
Der Compiler gcc sagt:
warning: format '%i' expects type 'int *', but argument 2 has type 'int'
warning: format '%i' expects type 'int *', but argument 3 has type 'int'
warning: format '%i' expects type 'int *', but argument 4 has type 'int'
-
gigg schrieb:
scanf() benoetigt ja die Adresse der Argumente, warum funktioniert die Zeigervariante (mit Pfeiloperator) nicht.
Eben deswegen. Der Pfeiloperator liefert dir schließlich das Element, keinen Zeiger da drauf. Du musst wieder den Adressoperator auf das Element anwenden.
Merke:
foo->bar
ist kurz für(*foo).bar
.
-
Alles klar, ich habs kapiert.
Danke.