Strukturvariable mit einer Schleife füllen???
-
Hallo Forum
ich brauche hilfe bei Strukturen, vollgendes Problem:
Ich habe eine Struktur Person länge 50 erstellt und möchte Sie mit einer Schleife füllen, ohne der Schleife gehts, also wenn ich nur eine Person engeben möchte, nur wie in der Schleife, hier schonmal etwas Code:#include<stdio.h> #include<string.h> struct Person { char anrede[5]; char name[40]; char vorname[40]; bool geschlaecht; int gr; float gew; int gebjahr; }; void eingabe(struct Person *p) { printf(\nPacient: \n"); scanf("%s",p->anrede); printf("Name: "); scanf("%s",p->name); printf("Vorname: "); scanf("%s",p->vorname); printf("Groesse: "); scanf("%f",&p->gr); printf("Gewicht: "); scanf("%d",&p->gew); printf("Geschlaecht: "); scanf("%d",&p->geschlaecht); printf("Geburtsjahr: "); scanf("%d",&p->gebjahr); } // Ausgabe void ausgabe(Person *p, int anzahl) { int i; for(i = 0; i < anzahl; i++) { printf("Pacient: %s Name: %s ...", p[i].anrede, p[i].name); // usw. } } void main() { struct Person pacient[50]; int anzahl=5; // es sollen anzahl Pacienten angelegt werden! // wie soll der Aufruf mit den Parametern ausehen // ich habe mit einer einfachen Schleife versucht: :confused: for(i = 0; i < anzahl; i++) { // hier ist hilfe benötigt :o), also das Speichern, das füllen des Arrays } // Ausgabe } // ich habe das Gefühl das ich hier auch viel durcheinander gebracht habe ???
Vielen Dank im Voraus
mfg
mirsad
-
Wenn du nur "Anzahl" Patienten (pacient gibts im Englischen nicht) anlegen willst, dann mach das doch:
#define anzahl 5 int main() { struct Person patients[anzahl]; }
Füllen kannst du das Array so:
for(i=0; i < anzahl; i++) { strcpy(patients[i].anrede, "Herr"); strcpy(patients[i].name "Foo"); patients.geschlecht = 'w'; // Geschlecht mit "e" und ob bool (das es // glaub ich eh nur in C++ gibt) hier sinnvoll // ist? // usw }
Wenn du erst zur Laufzeit weißt, wie viele Personen du benötigst, dann kannst du den benötigten Speicher per malloc allokieren:
struct Person* patients = malloc(sizeof(struct Person) * anzahl);
// Füllen wie oben
-
Hallo interpreter
danke hat geholfen
mfg
Mirsad