toothpick192
Grünschnabel
Hallo,
da ich Uni-bedingt mich mit C/C++ beschäftigen muss, habe ich versucht mir das ganze in den Kopf zu hämmern... Geht eigentlich alles auch ganz gut - bis auf die Zeiger-Problematik.(denke, dass geht vielen Anfängern so)
Obwohl ich meine diese ganze Zeigersache verstanden zu haben, geben mir Zeiger auf "Strings" immer noch Kopfschmerzen...
Als Beispiel folgender Code:
Hier soll ein C-String an die Funktion toWin übergeben werden, der den "Linux" Pfad in einen "Windows" Pfad ändert und als Rückgabewert einen Zeiger auf den umgeänderten String liefert.
Die Logik mag nicht sonderlich elegant sein, aber es funktioniert. Wenn man den "out" Zeiger mit puts() in der toWin Methode ausgibt, bekommt man tatsächlich das erwartete Ergebnis.
Allerdings in der Ausgabe der main Methode bekomme ich nur noch Speichermüll. Ich habe mittlerweile alles mir erdenkliche ausprobiert und komme aber auf keine Lösung. Kann mir jemand auf die Sprünge helfen ?
Danke im Voraus,
Christian
da ich Uni-bedingt mich mit C/C++ beschäftigen muss, habe ich versucht mir das ganze in den Kopf zu hämmern... Geht eigentlich alles auch ganz gut - bis auf die Zeiger-Problematik.(denke, dass geht vielen Anfängern so)
Obwohl ich meine diese ganze Zeigersache verstanden zu haben, geben mir Zeiger auf "Strings" immer noch Kopfschmerzen...
Als Beispiel folgender Code:
Code:
const char* toWin(const char* in){
int i = strlen(in);
bool first = true;
int l = 0;
char res[i+1];
char* out = res;
while(*in !='\0'){
if(*in=='/' && first){
*out='C';
*out++;
*out=':';
*out++;
*out='\\';
*out++;
first=false;
}
else if(*in=='/'){
*out='\\';
*out++;
}
else{
*out=*in;
*out++;
}
*in++;
}
*out='\0';
out = res;
puts(out);
return out;
}
int main(void)
{
const char* test = "/bin/ReadMe.txt";
puts(toWin(test));
getc(stdin);
}
Hier soll ein C-String an die Funktion toWin übergeben werden, der den "Linux" Pfad in einen "Windows" Pfad ändert und als Rückgabewert einen Zeiger auf den umgeänderten String liefert.
Die Logik mag nicht sonderlich elegant sein, aber es funktioniert. Wenn man den "out" Zeiger mit puts() in der toWin Methode ausgibt, bekommt man tatsächlich das erwartete Ergebnis.
Allerdings in der Ausgabe der main Methode bekomme ich nur noch Speichermüll. Ich habe mittlerweile alles mir erdenkliche ausprobiert und komme aber auf keine Lösung. Kann mir jemand auf die Sprünge helfen ?
Danke im Voraus,
Christian