Dateipfad eingeben
-
In meinem Programm oeffne ich anfangs eine datei um sie einzulesen...
In der Testphase des programms hab ich den dateipfad von anfang an im Programm festgelegt...nun moechte ich aber nach dem start eine abfrage haben, welche datei geoeffnet werden soll.Ich habe folgenden Code:
const char * const pFILENAME1/; // Statistikdatei const char * const pFILENAME2 = "C:\\out1.xls"; // Protokolldatei const char * const pFILENAME3 = "C:\\Protokoll.xls"; scanf("Dateiname:%c",pFILENAME1); ifstream inFile; // Datei öffnen inFile.open(pFILENAME1);
icxh bekomme die fehlermeldung:
error C2734: 'pFILENAME1' : const object must be initialized if not externliegt wohl daran das der dateityp pFilename1 nicht mit dem mit scanf eingelesenen dateityp uebereinstimmt...
welchen dateityp muss ich da benutzen, und geht das ueberhaupt mit scanf???
Bitte um eure hilfe...danke im vorraus
-
Hallo,
machs mal so:
char* ptr_filename = (char*)NULL; ptr_filename = new char [256]; if (ptr_filename == (char*)NULL) exit (-1); else scanf ("%s", ptr_filename) //scanf erwartet zwar die Addresse des Buffers, allerdings ist ptr_filename ja schon eine addresse.
-
Am besten du schlägst dich nicht mit C-Strings rum, sondern benutzt die std::string Klasse und statt scanf cin!
Ungetestet:#include <iostream> #include <string> #include <fstream> using namespace std; int main() { string Filename; getline(cin, Filename); ifstream stream(Filename.c_str(); //Mach was mit dem stream }
-
fluxy schrieb:
machs mal so:
char* ptr_filename = (char*)NULL; ptr_filename = new char [256]; if (ptr_filename == (char*)NULL) exit (-1); else scanf ("%s", ptr_filename) //scanf erwartet zwar die Addresse des Buffers, allerdings ist ptr_filename ja schon eine addresse.
Ne. Mach bitte nicht so. Nicht nur das die dynamische Allozierung hier überflüssig ist (da du sowieso einen festen Wert von 256 angibst), dein Code ist gleich auch noch buffer-overflow gefährdet.
Entweder du verwendest gleich die Variante von KPC (empfohlen) oder du beschränkst wenigstens die maximale Eingabelänge für scanf.
-
scanf würde ich nicht benutzen. nimm wie gesagt cin oder Standard C Funktionen wie fgets()
-
Horst2 schrieb:
scanf würde ich nicht benutzen. nimm wie gesagt cin oder Standard C Funktionen wie fgets()
Ist scanf() nich auch eine Standard C Funktion
-
KPC schrieb:
Horst2 schrieb:
scanf würde ich nicht benutzen. nimm wie gesagt cin oder Standard C Funktionen wie fgets()
Ist scanf() nich auch eine Standard C Funktion
Ja, das ist sie.
mfg
realisticer