[erledigt] String-Funktion
-
hi,
ich versuche derzeit, von einem Buch geleitet, eine String Funktion (wenn man sie so nennen kann) als Übungsaufgabe zu schreiben. Leider macht meine Funktion nicht das, was ich will, obwohl sie doch recht einfach gehalten ist:#include<iostream> using namespace std; char* string1( char *s ); int length( char *s ); char* string1( char *s ) { cout << "s = " << s << endl; // Ausgabe hier: "stringtest01" int i = length(s); char *p = new char[i+1]; while(*p++ = *s++); cout << "len = " << i << " p = " << p << endl; // Ausgabe hier: "len = 12 p = " return p; } int length( char *s ) { int leng=0; while(*s++) leng++; return leng; } int main() { cout << string1("stringtest01") << endl; }Die Funktion ist wirklich sehr simpel, deshalb wunderte es mich um so mehr, dass sie nicht richtig funktioniert...
Kompilliert wird mein Code ohne Probleme, jedoch gibt mein selbstgebauter kleiner String nichts zurück ( p = ).
kann mir bitte jemand verraten was hier falsch ist, denn ich komm einfach nicht drauf.
-
Nicht der Fehler..
EDIT:
Freigeben solltest du aber den Speicher wieder..
-
// ... char *p = new char[i+1]; while(*p++ = *s++); cout << "len = " << i << " p = " << p << endl; // Ausgabe hier: "len = 12 p = " return p;Du gibst den Zeiger p zurück, der aber auf Ende zeigt.
Fürs kopieren musst Du dir eine kopie des Zeigers machen:// ... char *p = new char[i+1]; char *q = p; while(*q++ = *s++); cout << "len = " << i << " p = " << p << endl; // Ausgabe hier: "len = 12 p = " return p;Simon
-
Ich danke vielmals für die schnelle Antwort, es funktioniert jetzt einwandfrei
