Brauche Hilfe bei einer Datenstruktur-Aufgabe
-
Mahlzeit erst einmal
also ich soll eine Datenstruktur über "typedef" erstellen
typedef struct{...}
soweit nicht das Problem...jedoch soll ich erst einmal ein Datenfeld für 5 Datensätze festlegen.
Sind diese schon durch hinzufügen von "[5]" definiert oder wie bewerkstellige ich dies?
Bin ein ziemlicher Neuling in diesem Gebiet und hoffe dadurch auf Geduld und verständliche Hilfe.
Danke schon mal ^^
-
typedef struct { ... } MY_SUPER_TYPE; MY_SUPER_TYPE myArray[5];
aber auch so
typedef struct { ... } MY_SUPER_TYPE; MY_SUPER_TYPE myArray = { { ... }, { ... }, { ... }, { ... }, { ... } };
-
mgaeckler schrieb:
MY_SUPER_TYPE myArray = { { ... }, { ... }, { ... }, { ... }, { ... } };
Das ist so falsch. Richtig wäre
MY_SUPER_TYPE myArray[] = { { ... }, { ... }, { ... }, { ... }, { ... } };
-
ich werde es gleich mal probieren und dann berichten wie es läuft
-
Wutz schrieb:
mgaeckler schrieb:
MY_SUPER_TYPE myArray = { { ... }, { ... }, { ... }, { ... }, { ... } };
Das ist so falsch. Richtig wäre
MY_SUPER_TYPE myArray[] = { { ... }, { ... }, { ... }, { ... }, { ... } };
Äh, sorry, da hab ich was vergessen
-
also ich bin nun soweit:
#include <stdio.h> typedef struct { char vorname[15]; char nachname[25]; char geburtsdatum[11]; int matrikelnummer; }AUSWEIS; AUSWEIS stud[5] {
der erste Wert der Struktur soll vordefiniert sein...wie kann ich das mit dem ersten Feld verknüpfen und und die anderen per Eingabe hinzufügen?
ich überlege ob ich durch:
stud[1]='...'
den ersten wert definieren kann und den rest in einer "For" schleife per eingabe hinzufügen kann
-
kakashi_black schrieb:
also ich bin nun soweit:
#include <stdio.h> typedef struct { char vorname[15]; char nachname[25]; char geburtsdatum[11]; int matrikelnummer; }AUSWEIS; AUSWEIS stud[5] {
der erste Wert der Struktur soll vordefiniert sein...wie kann ich das mit dem ersten Feld verknüpfen und und die anderen per Eingabe hinzufügen?
AUSWEIS stud[5] = { { "Black", "Kakashi", "11.06.1999", 12345 } };
-
#include <stdio.h> typedef struct { char vorname[15]; char nachname[25]; char geburtsdatum[11]; int matrikelnummer; }AUSWEIS; AUSWEIS stud[5]= { {"kakashi","black","02.01.1987",505080} };
ist das so nun richtig?
kann ich einfach mitscanf()
weitere "Werte" einlesen?
-
kakashi_black schrieb:
ist das so nun richtig?
kann ich einfach mitscanf()
weitere "Werte" einlesen?
Klar, warum nicht?
-
muss ich die eingegebenen Daten dann mit
strcpy();
mit dem jeweiligen Feld verknüpfen?
habe ja nun nur ein Feld von den 5 belegt
-
kakashi_black schrieb:
muss ich die eingegebenen Daten dann mit
strcpy();
mit dem jeweiligen Feld verknüpfen?
habe ja nun nur ein Feld von den 5 belegt
Ja, das geht. Ist doch egal, wieviele Datensätze Du belegt hast, Du hast dem Compiler gasagt, daß 5 Datensätze im Array enthalten sein sollen und damit basta.
-
mgaeckler schrieb:
kakashi_black schrieb:
muss ich die eingegebenen Daten dann mit
strcpy();
mit dem jeweiligen Feld verknüpfen?
habe ja nun nur ein Feld von den 5 belegt
Ja, das geht. Ist doch egal, wieviele Datensätze Du belegt hast, Du hast dem Compiler gasagt, daß 5 Datensätze im Array enthalten sein sollen und damit basta.
Guten Abend,
Wäre es vielleicht möglich, das komplette Programm zu sehen?
-
also ich bekomme es i-wie nicht hin.
habe es nun so versucht:
#include <stdio.h> #include <string.h> typedef struct { char vorname[15]; char nachname[25]; char geburtsdatum[11]; int matrikelnummer; }AUSWEIS; int main (void){ AUSWEIS stud[5]= { {"oawsjhd","asdf","20.12.1907",500000} }; scanf("%s %s %s %i", &stud[1].vorname, &stud[1].nachname, &stud[1].geburtsdatum, &stud[1].matrikelnummer); return 0; }
Ich bekomme dabei die fehlermeldung:
quelltext.c: In function 'main':
quelltext.c:22:5: warning: format '%s' expects type 'char ', but argument 2 has type 'char ()[15]'
quelltext.c:22:5: warning: format '%s' expects type 'char ', but argument 3 has type 'char ()[25]'
quelltext.c:22:5: warning: format '%s' expects type 'char ', but argument 4 has type 'char ()[11]'was mache ich denn nur falsch?
-
Steht doch in der Fehlermeldung => noch mal die Unterlagen mit scanf ansehen und was bei Strings besonders ist.
-
also ich dachte das es so so vllt geht
#include <stdio.h> #include <string.h> typedef struct { char vorname[15]; char nachname[25]; char geburtsdatum[11]; int matrikelnummer; }AUSWEIS; int main (void){ int i; AUSWEIS stud[5]= { {"oawsjhd","asdf","20.12.1907",500000} }; for(i=1, i<5, i+=i){ scanf("%s", &stud[i].vorname); scanf("%s", &stud[i].nachname); scanf("%s", &stud[i].geburtsdatum); scanf("%i", &stud[i].matrikelnummer); } return 0; }
aber kommt wieder das selbe.
@f.-th. : ich habe noch mal nach geschaut aber keine ahnung worauf du hinaus willst. o_O
-
In Zeile 22 bei deinem ersten Quelltext sind 3 Zeichen zu viel. Mach die weg und es ist gut. Es sind 3 mal die selben. Siehe Strings und scanf.
-
Hier noch mal eine Referenz für scanf
Schau dir in dem Beispiel dort mal den Unterschied zwischen Zeile 10 (Strings) und 12 (Integer) an. (ich meine nicht %s und %d)
-
du meinst doch das ich den Index weglassen soll oder?
aber wie bekomme ich denn dann die jeweiligen daten der structur zugeordnet?
-
Nein, das meine ich nicht.
Bei Arrays brauchst du den Adressoperator nicht, da der Arrayname (ohne Index) schon mit der Adresse Verküpft ist.
Hier geht es um das Array vorname[15].
stud[i].vorname
ist schon die Adresse.Deine matrikelnummer ist kein Array!
-
also damit ich es richtig verstehe... dadurch das stud[1].vorname anspreche, spreche ich direkt die gesamte struktur an ohne die einzelne zuordnung noch machen zu müssen?