strukturdatentyp in C ?

Al_Capone

Cadet 1st Year
Registriert
Juni 2003
Beiträge
14
Hallo!

hab hier eine Frage, bzw. versteh nicht so recht wie man die Aufgabe lösen soll!

Hier die Aufgabenstellung:

o Legen Sie einen in C syntaktisch korrekten Strukturdatentyp „adresse“ an, der die Merkmale „Name“, „Vorname“, „Strasse“, „Ort“ jeweils als Zeichenkette mit 50 Zeichen und „PLZ“ als Ganzzahlentyp speichert.

o Schreiben Sie eine Funktion (auf Papier), die diese Daten auf ein File speichert, indem Sie den Filenamen und ein Feld mit 1000 Einträgen dieser Struktur an die Funktion übergeben. Zur Vereinfachung genügt es, alle 1000 Einträge zu speichern ohne auf die Inhalte zu achten

-------------------------------------------------------------------------------------------------------------------


bei der ersten Aufgabe denk ich mal das es so aussieht:

struct adresse { unsigned char Name[50];
unsigned char Vorname[50];
unsigned char Strasse[50];
unsigned char Ort[50];
int PLZ;};


Ist das so richtig?


Die zweite Aufgabe verstehe ich nicht ganz so recht, kann mir da jemand weiterhelfen??



MfG


Al_Capone
 
Hi,

das erste sieht gut aus. Je nach dem wie kleinlich man sein will, bräuchstest du 51 Zeichen große Arrays, da die terminierende 0 auch mit reinmuss. Warum hast du denn unsigned char genommen (anstatt einfach char)? Hat das einen besonderen Hintergrund?

Zum Zweiten: Der Zusatz "ohne auf die Inhalte zu achten" leuchtet mir auch nicht so richtig ein. Du sollst vermutlich einfach eine Funktion schreiben, die ein Array dieser Struktur der Größe 1000 in eine Datei schreibt, ohne dabei jetzt spezielle Zusatzinformationen zu speichern wie die Daten auch wieder reibungslos eingelesen werden können. Ich würde jedes Element der Struktur in eine Zeile schreiben, dann die Strukturen alle nacheinander weg.
 
hier noch nen tip von mir der schreib arbeit spart !

typedef struct adresse EINTRAG;

einfach nen datentyp definieren und damit arbeiten spart den lästigen aufruf bei funktionen :

struct adresse blabla

@7H3 N4C3R
die 0 hießt Nullbyte (\0)
 
@MCelle: Ich weiß. Sollte eigentlich klar sein, was gemeint ist. Und (char)0 ist \0.
 
Also ich würd erstmal auf jeden Fall machen:
#typedef struct adresse EINTRAG; //wie MCelle schon gesagt hast.

Dann legste ne Feld mit 1000 Pointer auf den Typ an.
EINTRAG* Register[1000];

den kannse dann in eine Funktion weitergeben:
void schreibe(char* Dateiname, EINTRAG* abc)
{
....//Halt die Werte von abc in ne Datei schreiben
}

und dann in der main: schreibe("Test.txt", Register)
sollte klappen
 
Zurück
Oben