Pointer/Array/Übergabeparameter

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
mck90
Beiträge: 4
Registriert: Sa Dez 12, 2015 12:26 pm

Pointer/Array/Übergabeparameter

Beitrag von mck90 » Sa Dez 12, 2015 12:29 pm

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.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

mck90
Beiträge: 4
Registriert: Sa Dez 12, 2015 12:26 pm

Re: Pointer/Array/Übergabeparameter

Beitrag von mck90 » Sa Dez 12, 2015 12:31 pm

Ich verstehe meinen Fehler noch nicht ganz? Und brauche Hilfe um das Progamm zu Ende zu bringen. Danke für eure Hilfe

mfg

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Pointer/Array/Übergabeparameter

Beitrag von cloidnerux » Sa Dez 12, 2015 2:35 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Pointer/Array/Übergabeparameter

Beitrag von Xin » Sa Dez 12, 2015 2:41 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

mck90
Beiträge: 4
Registriert: Sa Dez 12, 2015 12:26 pm

Re: Pointer/Array/Übergabeparameter

Beitrag von mck90 » Sa Dez 12, 2015 3:12 pm

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);
}

mck90
Beiträge: 4
Registriert: Sa Dez 12, 2015 12:26 pm

Re: Pointer/Array/Übergabeparameter

Beitrag von mck90 » Sa Dez 12, 2015 3:15 pm

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.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Pointer/Array/Übergabeparameter

Beitrag von Xin » Sa Dez 12, 2015 5:19 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten