const char und const char*
-
Hallo!
Ich habe ursprünglich folgendes getan:
sprintf(filename, "xxxx.dat"); FILE* pfile = fopen(filename, "r");also per sprintf ein char erzeugt und die Datei mit dem Namen dann geöffnet.
Nun möchte ich das erzeugen des Dateinamens aber als Funktion auslagern:
const char GetFilename() { char filename[100]; sprintf(filename, "P2_testbeam_27_05_2015/data/ch00/run_1_ch00.dat"); return filename; }und später:
FILE* pfile = fopen(GetFilename, "r");Ich bekomme folgende Compilermeldung:
error: cannot convert ‘const char (*)()’ to ‘const char*’ for argument ‘1’ to ‘FILE* fopen(const char*, const char*)’Hat dazu jemand eine Idee?
Ich weiß, ich bin Anfänger und (noch) etwas verloren. Vielen lieben Dank!
Juniata
~Edit durch Arcoth: Tags und Formatierung~
-
Um eine Funktion ohne Argumente aufzurufen, brauchst du auch ein leeres Klammernpaar:
fopen(GetFilename(), "r");ohne dieses übergibst du nämlich ein lvalue auf die Funktion selbst, welches in diesem Fall in einen Zeiger auf die Funktion zerfiel (
char const(*)()).
-
const char GetFilename() { char filename[100]; sprintf(filename, "P2_testbeam_27_05_2015/data/ch00/run_1_ch00.dat"); return filename; }1. fehlt da nen *
und 2. nen static
-
unskilled schrieb:
1. fehlt da nen *
und 2. nen staticund das sprintf ist unnötig
const char* GetFilename() { return "P2_testbeam_27_05_2015/data/ch00/run_1_ch00.dat"; }
-
Das
const char*undFILE*ist unnötig. Nimmstd::stringundstd::fstream, wir sind hier nicht bei C. Oder du bist im falschen Forum gelandet.