C Programm verstehen?

... komplette Frage anzeigen

1 Antwort

Was soll das Programm den genau machen? Du hast verschiedene Probleme die ich dir auch so schonmal aufzeigen kann:

char* toBinaryString(int x){
char c[3];
....
return c;
}

c ist eine sogenannte automatische bzw. lokale Variable. Dazu muss man Scopes oder auch Gültigkeitsbereich in C verstehen. Eine Variable ist immer nur in ihrem Scope gültig. Die einfachste und wichtigste Regel dafür ist, dass ein Gültigkeitsbereich von geschweiften Klammern eingefasst wird {...}
Deklarierst du also nun c am Anfang der Funktion hört die Variable am Ende der Funktion auf zu existieren. Variablen ausserhalb der {} sind global verfügbar.
Damit macht es gar keinen Sinn die Addresse von c zurückzugeben, da c ja zerstört (anderweitig verwendet) wird.
Zweites Problem das ich sehe ist:

char d[] = toBinaryString(5);

Das sieht für mich nicht nach gültigem C aus. 

Die einfachste Lösung ist d als Referenz an toBinaryString zu übergeben:

void toBinaryString(int x, char* c){
....
}
char d[4];
toBinaryString(5, &d[0]);

Hab mal das Array etwas grösser gemacht, da ich mir nicht sicher war ob du den Nullterminator schon bedacht hast, den ein String in C haben muss. Die 0 musst du in das letzte Element auch selbst hineinschreiben, sonst weiss z.B.  printf nicht wann dein String endet.




Antwort bewerten Vielen Dank für Deine Bewertung