Übergebenes CharArray in Funktion ändern!
-
wieder mal ein kleines problem:
void datei_eingeben(char datei[]) { datei = "datei.txt"; } void main() { char datei[255]; datei_eingeben(datei); cout << datei << endl; }wie man sieht will ich "datei" von typ char array in der funktion datei_eingeben() ändern. klappt aber nicht!
wo ist der fehler???
-
Du musst eine Referenz benutzen
void datei_eingeben(char &datei[]) { datei = "datei.txt"; }dann klappts glaub ich
-
ohh..das geht ja mal garnet..habs ausprobiert..
-
dann probiers mal mit nem zeiger
-
soweit ich das weiss, ist das die zeiger variante!
-
probiers mal so:
bei den c string's muss du mit den sonder funktionen arbeiten ( strcpy, strcat, strcmp )
(char datei[]) erwartet eine adresse, mit &datei[0] wird diese uebergeben...mit strings ( string klasse ) geht es einfacher, da kann man mit str="asdf", if str1==str2, usw arbeiten...
#include<iostream> using namespace std; void datei_eingeben(char datei[]) { cout << datei << endl; strcpy(datei,"datei.txt"); } int main() { char datei[255]; strcpy(datei,"hugo"); datei_eingeben(&datei[0]); cout << datei << endl; system("pause"); return 0; }
-
geht doch..danke

aber wieso ist es mit meine variante nicht möglich?
in der funktion kann ich datei[0]='1' einen wert zuweisen aber nicht den
ganzen text?!
-
Ganz einfach weil char[] erstmal das gleiche ist wie char* in deinem Fall. Diesem Pointer weist du dann einen Wert zu, nämlich die des String-Literals "datei.txt". Nach der Funktion wird der Char-Pointer dann vom Stack genommen und alles ist wieder flöten.
Nimm in C++ am Besten std::string!
Gruß
-
ok. habs glaube ich verstanden. dieser art ist aber nur mit char array nicht möglich, oder? bei einem normalen int würde es gehen?
ich bin zwar kein c++ as, jedoch habe ich es so verstanden, dass bei "call by referenz" die übergebenen werte im funktion auch geändert werden können und
diese änderung erhalten bleibt auch wenn die funktion verlassen wird..richtig?noch eine andere sache:
ich habe jetzt die variable "datei" der funktion übergeben..wäre es aber auch
möglich diese char array variable in der funktion zu initialisieren und
diese dann als return wert zurückliefern?