Seite 1 von 1

Pointer/Array/Übergabeparameter

Verfasst: Sa Dez 12, 2015 12:29 pm
von mck90
Aufgabe 4:
Schreiben Sie ein Programm, welches eine Struktur person deklariert (firstname, name, birthday). Definieren Sie in main() ein Array mit 3 Elementen dieses Typs. Schreiben Sie nun eine Funktion, welche als Übergabeparameter einen Zeiger auf eine Struktur person erhält. In dieser Funktion sollen die Elemente der übergebenen Struktur beschrieben werden (scanf). In einer weiteren Funktion sollen alle Elemente einer Struktur person ausgegeben werden (printf). Realisieren Sie dieses Programm so, dass alle drei Elemente des Arrays beschrieben und ausgegeben werden.

Re: Pointer/Array/Übergabeparameter

Verfasst: Sa Dez 12, 2015 12:31 pm
von mck90
Ich verstehe meinen Fehler noch nicht ganz? Und brauche Hilfe um das Progamm zu Ende zu bringen. Danke für eure Hilfe

mfg

Re: Pointer/Array/Übergabeparameter

Verfasst: Sa Dez 12, 2015 2:35 pm
von cloidnerux
Hi und Willkommen im Forum :D
Ich verstehe meinen Fehler noch nicht ganz? Und brauche Hilfe um das Progamm zu Ende zu bringen. Danke für eure Hilfe
Ich verstehe deinen Fehler auch nicht, Hauptsächlich weil du uns nicht Mitteilst, was denn nun falsch sein sollte.

Den Code kann ich nicht testen, denn du hast nur ein Screenshot und nicht den Code angehangen.

Wenn es darum geht, warum dein Programm nicht Compiliert, schau dir deine Funktionsdeklarationen an.

Re: Pointer/Array/Übergabeparameter

Verfasst: Sa Dez 12, 2015 2:41 pm
von Xin
mck90 hat geschrieben:Ich verstehe meinen Fehler noch nicht ganz? Und brauche Hilfe um das Progamm zu Ende zu bringen. Danke für eure Hilfe
Sagen wir mal so... ich verstehe, dass das Programm vermutlich nicht tut, was Du möchtest - aber dafür wäre es gut zu wissen, was Du eigentlich tun möchtest.
f1 ist jetzt auch nicht sonderlich aussagekräftig

Bei scanf musst Du die Adresse angeben, wohin die Daten geschrieben werden sollen. Also an die Adresse der Variablen.

Bei printf gibst Du eine 15 an... warum?

Dokumentiere mal, was Du wo eigentlich tun möchtest.

Re: Pointer/Array/Übergabeparameter

Verfasst: Sa Dez 12, 2015 3:12 pm
von mck90
Also eig möchte Ich genau das tun was mir in der Aufgabe vorgeschrieben wurde.
Die Größen 15;15;11 sind variabel von mir vergeben.

Code: Alles auswählen

#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>



struct person
{
	char firstname[15];
	char name[15];
	char birthday[11];

};

void f1(struct person *pPerson);
void f2(struct person * pPerson);

main()
{
	int i;
	
	struct person people[3];
	
	for (i = 0; i < 3; i++)
	{
	f1(&people[0]);
	f2(&people[0]);
	};
	
	
}

void f1(struct person*pPerson)
{
	scanf("%s", pPerson->firstname);
	scanf("%s", pPerson->name);
	scanf("%s", pPerson->birthday);
}

void f2(struct person*pPerson)
{
	printf("%s\n", pPerson->firstname);
	printf("%s\n", pPerson->name);
	printf("%s\n", pPerson->birthday);
}

Re: Pointer/Array/Übergabeparameter

Verfasst: Sa Dez 12, 2015 3:15 pm
von mck90
Das Programm funktioniert soweit, sobald man aber einen zu langen namen eingibt spuckt er folgendes aus:

z.B
Eingabe:
Maxseinnameisteinfachvielzulang
Mustermann
01.01.2002

Ausgabe

MaxseinnameisteMustermann
Mustermann
01.01.2002

Das der firstname nach den 15 Buchstaben abgeschnitten wurde stört mich nicht, da aber in der erste Zeile Mustermann mit ausgespuckt wird, ist das doch der Beweis dass ich nicht auf das array zeige. Wenn man das so sagen kann.
Klar ich könnte die [15] erhöhen, dass will ich aber nicht. Es soll einfach den Teil des firstnamens "abschneiden" der zu lang ist und dann mit der nächsten Zeile (name) weiter machen.

Villeich hab ich auch was grundlegendes Falsch gemacht.

Re: Pointer/Array/Übergabeparameter

Verfasst: Sa Dez 12, 2015 5:19 pm
von Xin
mck90 hat geschrieben:Das der firstname nach den 15 Buchstaben abgeschnitten wurde stört mich nicht, da aber in der erste Zeile Mustermann mit ausgespuckt wird, ist das doch der Beweis dass ich nicht auf das array zeige. Wenn man das so sagen kann.
Klar ich könnte die [15] erhöhen, dass will ich aber nicht. Es soll einfach den Teil des firstnamens "abschneiden" der zu lang ist und dann mit der nächsten Zeile (name) weiter machen.

Villeich hab ich auch was grundlegendes Falsch gemacht.
Du hast scanf benutzt. ^^

Gib mal zuerst den Nachnamen ein, dann den überlangen Vornamen.

scanf ist gefährlich, weil es eben nicht fragt, wie lange das Array ist.