Pointer auf String als Rückgabewert
-
Hallo!
Ich habe eine kleine Frage:
In meinem Programm soll eine Funktion Eingabe Werte entegegennehmen.
Die Eingabewerte sind Strings. Das heißt, dass ich doch einen Pointer auf den String der Funktion übergeben muss, oder?
Aber wie verändere ich dann den übergebenen String innerhalb der Funktion?
Also wenn der Funktion der String "Hallo" übergeben wird, soll dann der Rückgabewert der Funktion "Servus" sein.Wenn ich das so mache, dann klappt das nicht:
auswerten(char *text){ char *Antwort = "Servus"; .... .... text = Antwort; //hiermit weise ich doch dem Zeiger text einen neuen zu, oder irre ich mich da } main(){ char *Eingabe = "Hallo"; ... auswerten(Eingabe); .. }
Wäre nett, wenn ihr mir hier weiterhelfen könntet.
mfg Bene
-
probier so:
auswerten(char **text){ char *Antwort = "Servus"; .... .... *text = Antwort; //hiermit weise ich doch dem Zeiger text einen neuen zu, oder irre ich mich da } main(){ char *Eingabe = "Hallo"; ... auswerten(&Eingabe); .. }
:xmas2:
-
Hallo!
Danke erstma für die Hilfe!
aber ich habe da ma eine kleine Frage:Also das ist doch jetzt nen doppelter Zeiger, oder?
Wenn der Text verändert wurde in der Funktion.
Wie schaut dann das vorgehen in der main aus?
Hier zeigt doch der String auf eine Adresse, oder? (Zeigen jetzt zwei Zeiger auf die selbe Adresse?)Also
Eingabe
zeigt doch dann auf den in der Funktion erstellten String, oder?
Was passiert mit dem STring, auf den vorher gezeigt wurde?
Ist der immer noch vorhanden? Also ich habe das ma versucht, aber scheint wohl nicht zu sein ,oder?
Kann mir jemand das Geschehen erklären?Wäre nett, wenn ihr mir helfen könntet.
mfg Bene
-
Bene schrieb:
Also
Eingabe
zeigt doch dann auf den in der Funktion erstellten String, oder?
Was passiert mit dem STring, auf den vorher gezeigt wurde?
Ist der immer noch vorhanden? Also ich habe das ma versucht, aber scheint wohl nicht zu sein ,oder?
Kann mir jemand das Geschehen erklären?hi,
der erste string ist noch vorhanden, aber du kannst nicht mehr drauf zugreifen, weil der pointer jetzt auf den neuen string zeigt. in der funktion wird ja der inhalt des pointers verändert.
:xmas2:
-
hi
ten schrieb:
char *Eingabe = "Hallo";
darf man das so wirklich schreiben? dachte das geht nur mit arrays oder const...
-
Nein, das ist tatsächlich erlaubt - in C ist ein String-Literal ein
char*
(aber zur Laufzeit nicht modifizierbar). Trotzdem ist es idR sicherer, den Zeiger in einemconst char*
unterzubringen.
-
dann muss ich mir nochmal was genauer anschaun
danke