Seite 1 von 1

zweidimensionale Struktur an eine Funktion übergeben

Verfasst: Di Mär 11, 2014 5:30 pm
von forumnewbie
--->TIPPFEHLER GEFUNDEN!

Hallo,

ich möchte meine zweidimensionale Struktur a) als Struktur und b) als Zeiger auf diese Struktur an meine Funktionen ausgeben1 und ausgeben2 übergeben. Diese Funktionen sollen mir den Inhalt meiner Struktur anzeigen. Die Struktur Song soll zunächst nur Informationen über zwei Lieder speichern.
Hier mein Quellcode:

Code: Alles auswählen

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

void ausgeben1(struct Songs[2]);
void ausgeben2(struct Songs*[2]);

struct Song{
	char Interpreter[30];
	int Erscheinungsjahr;
	char Titel[30];
};

int main(){
	struct Song songs[2];
	struct Song *psongs[2];
	psongs[0] = &songs[0];
	psongs[1] = &songs[1];

	strcpy(songs[0].Interpreter, "Interpreter 1");
	songs[0].Erscheinungsjahr = 2002;
	strcpy(songs[0].Titel, "Titel 1");
	strcpy(songs[1].Interpreter, "Interpreter 2");
	songs[1].Erscheinungsjahr = 1990;
	strcpy(songs[1].Titel, "Titel 2");
	
	ausgeben1(songs);
	ausgeben2(psongs);

	system("Pause");
	return 0;
}

void ausgeben1(struct Song songs[2]){
	for(int i = 0; i<2; i++){
		printf("%s\n", songs[i].Interpreter);
		printf("%d\n", songs[i].Erscheinungsjahr);
		printf("%s\n", songs[i].Titel);
	}
}

void ausgeben2(struct Song* psongs[2]){
	for(int i = 0; i<2; i++){
		printf("%s\n", psongs[i]->Interpreter);
		printf("%d\n", psongs[i]->Erscheinungsjahr);
		printf("%s\n", psongs[i]->Titel);
	}
}
Wenn ich die Ausgabe in der main-Funktion mache, dann funktioniert alles einwandfrei. Ich übergebe anscheinend meinen Parameter falsch, aber ich weiß nicht wie ich das richtig machen soll.

Als Fehlermeldung beim Kompilieren erhalte ich:
'ausgeben1': Konvertierung des Parameters 1 von 'Song [2]' in 'Songs []' nicht möglich
'ausgeben2': Konvertierung des Parameters 1 von 'Song [2]' in 'Songs []' nicht möglich
Was ist genau mit dem Typ Song[] gemeint und wie muss die Übergabe in diesem Beispiel richtig gemacht werden? Danke!

Re: zweidimensionale Struktur an eine Funktion übergeben

Verfasst: Di Mär 11, 2014 5:54 pm
von forumnewbie
Uff, Fehler gefunden...

ich habe beim Prototypen Songs statt Song geschrieben ...

Re: zweidimensionale Struktur an eine Funktion übergeben

Verfasst: Di Mär 11, 2014 6:02 pm
von mfro
forumnewbie hat geschrieben: Was ist genau mit dem Typ Song[] gemeint und wie muss die Übergabe in diesem Beispiel richtig gemacht werden? Danke!
Genau hingucken.

Tips:
  1. Du bist dir offenbar nicht im klaren darüber, ob deine Struktur nun Song oder Songs heißen soll.
  2. Du hast die Funktionsprototypen an eine Stelle im Programm hingeschrieben, wo der Typ der Struktur noch nicht bekannt ist, damit wird der Strukturtyp als Funktionsparameter anonym
Ansonsten sieht mir das ganz richtig aus.

Re: zweidimensionale Struktur an eine Funktion übergeben

Verfasst: Di Mär 11, 2014 6:06 pm
von forumnewbie
Hi,

habe bereits den Fehler gefunden (siehe oben). Ich sollte die Namen besser wählen, weil man drauf guckt und nicht mehr sieht, dass man sich vertippt hat. Erst nachdem ich Pause gemacht habe, habe ich den Fehler entdeckt. Weil ich die Sturktur Song -> songs genannt habe, bin ich beim Lesen des Quellcodes irgendwie durcheinander gekommen - die zwei Bezeichnungen haben sich beim Lesen im Kopf vermischt.

Danke trotzdem!