Brauche Hilfe bei einer Datenstruktur-Aufgabe
-
Du sprichst mit
stud[1].vorname
nur das Element vorname an.
Du hast damit den Zeiger auf das erste Element von vorname[15].Lies in deinem Tutorial/Buch nochmal das Kapitel über Zeiger/Arrays/Strings durch.
Unbedingt wie Arrays an Funktionen übergeben werden.Und wie Strings mit scanf eingelesen werden. Das ist z.Zt. dein Problem.
-
Das Problem liegt in der Typüberprüfung von C. Eigentlich übergibst Du genau das richtige, aber der Typ stimmt nicht.
stud[1].vorname ist ein char[15], stud[1].vorname[0] ist das erste Zeichen und vom Typ char und &stud[1].vorname[0] ist die Adresse des ersten Zeichens. Das ist dann auch vom Typ char *
Also:
scanf("%s", &stud[1].vorname[0])
Oder du sagst dem Compiler "das passt schon" indem Du den Typ castes (
)
Der Wert von stud[1].vorname und &stud[1].vorname[0] ist nämlich identisch:scanf("%s", (char *)stud[1].vorname)
Beides funktioniert, wobei es gefährlich ist zu casten, wenn man nicht genau weiss was man tut. Der Compiler überprüft dann den Typ nicht mehr, sondern verwendet den Wert einfach, egal, was Du übergibst.
Also für Dich passt die erste Variante wohl besser