Hallo Jörn,
da gibt es einige Sache in dem Code.
Code:
char * main_cat[4];
Hiermit reservierst du 4 Byte für 4 Zeiger auf char.
Code:
main_cat[0] = "---Hauptmenu---";
main_cat[1] = "Beep";
main_cat[2] = "Nix";
main_cat[3] = "Nix2";
main_cat[4] = "";
Das passt nie und nimmer in vier Byte
Du suchst:
Code:
char main_cat[5][16] ={"---Hauptmenu---",
"Beep", ...
""};
Das gleich gilt natürlich auch für sub_cat.
Die 5 steht für 5 Elemente und nicht für den größten Index. Die 16 Bytes werden gebraucht, da ein String immer mit einer 0 abschließt.
Jetzt musst du noch Zeiger beim Funktionsaufruf übergeben.
foo (&main_cat[1][0]);
Zeigt auf den Anfang von Beep.
Wenn du jetzt noch in der Deklaration der Funktion einen einfachen Zeiger auf char angibst, sieht das bestimmt schon viel besser aus.
Gruß
Jens
Lesezeichen