"struct.cpp" ist kein C-Programm, sondern verwendet die
Dateinamenserweiterung von C++-Programmen. Die werden vom Compiler
etwas anders als C-Programme übersetzt.
Da Du anscheinend C programmieren willst, solltest Du Deine Datei
umbenennen in "struct.c".
Allerdings solltest Du dann auch die Funktionsargumente von "main"
überarbeiten, da sonst der Compiler zu Recht motzt.
scanf ist eine äußerst gefährliche Funktion und sollte eigentlich aus
der C-Standardlibrary verbannt werden. Das liegt daran, daß auch in
Deinem Beispiel der vor der Tastatur sitzende Anwender den Speicher
überschreiben kann - er muss nur bei den scanf-Eingaben mehr als 29
Zeichen eintippen ...
Du solltest also in der Tat mit fgets ganze Zeilen einlesen, die auf
sinnvollen Inhalt überprüfen und dann erst ein sscanf darauf loslassen,
sofern das überhaupt nötig ist (hier genügt ein einfaches strncpy und
ein atoi).
Deine Funktion "Write" macht übrigens nicht ganz das, was Du
erwartest, zwar liest sie eingegebene Werte ein und speichert sie ...
aber eben nur in der lokalen Kopie der übergebenen Variablen. Deine
seltsamerweise "Read" benannte Funktion gibt niemals die in "Write"
eingelesenen Werte aus.
Lies Dir mal in einem guten C-Buch den Abschnitt über "call by
reference" und "call by value" durch, ich kann da guten Gewissens
die deutsche Übersetzung der zweiten Auflage des K&R ("Kernighan &
Ritchie", "Programmieren in C", Hanser Verlag) empfehlen.
Desweiteren:
C-Quelltext wird durch den Gebrauch von Einrückungen lesbarer.