Benutzerdefinierter Pfad beim Öffnen einer Datei
-
Hallo.
Versuche gerade in in C (benutze Code::Blocks auf Windows 7) zu Programmieren, dass man den Pfad (inkl. Dateinamen) als Eingabe einliest und diese dann öffnet.
Ganz so funktioniert es leider nicht.
Lasse ich die Eingabe weg und schreibe den Pfad (in meinem Fall: d:\\test.txt) hin, funktioniert es. Gebe dies auch so bei der Abfrage ein.Zur genaueren Erkärung was gesucht wird: Eine Datei soll eingelesen und verarbeitet werden können. Pfad und Name der Eingabedatei können beim Programmaufraf als optionales Argument an das Programm übergeben werden. Sollte diese Option vom Benutz nicht genutzt werden, ist als Standardwert GDI_testdata1.GSI zu verwenden.
Hier mein Quelltext:
#include <stdio.h> #include <stdlib.h> int main() { FILE *datei; char auswahl; char pfad[254]; char datei_[] = "GDI_Testdata1.GSI"; printf("Wollen Sie den Pfad selbst eingegeben? (y/n): "); scanf("%c", &auswahl); fflush(stdin); switch(auswahl){ case 'y': case 'Y': printf("Bitte Pfad eingeben: "); scanf("%s", &pfad); // Nicht fgets weil Entertaste sollte nicht mit übernommen werden. fflush(stdin); datei = fopen("pfad", "rt"); if (datei != NULL) { printf("Datei %s wurde erfolgreich ge\x94ffnet und kann jetzt verwendet werden.\n", pfad); } else printf("Datei %s konnte nicht ge\x94ffnet werden\n", pfad); break; case 'n': case 'N': printf("Die Datei %s wird ge\x94ffnet.\n", datei_); datei = fopen(datei_, "rt"); if (datei != NULL) { printf("Datei %s wurde erfolgreich ge\x94ffnet und kann jetzt verwendet werden.\n", datei_); } else printf("Datei %s konnte nicht ge\x94ffnet werden\n", datei_); break; default: printf("Bitte 'y' oder 'n' eingeben. "); } fclose(datei); printf("Datei wurde geschlossen."); return 0; }
Sollte danach den Dateinamen abändern und _edit.GSI einfügen. Hatte da an strcat gedacht - aber vielleicht gibt es bessere Vorschläge dafür!?
(Apropos: Mir wird mein ö nicht angezeigt - obwohl ich es mittels des Codes eingegeben hatte ... Vorschläge!?)
LG
-
Nimm besser doch fgets() und entferne das '\n' oder nimm
scanf("%253[^\n]", pfad);
damit du auch Leerzeichen und nicht zuviel Zeichen einliest. Und bei Arrays gehört da kein & hin.
Vergleich doch mal
datei = fopen("pfad", "rt"); //mit datei = fopen(datei_, "rt");
Fällt dir irgendetwas beim 1. Paramter auf?
-
Perfekt, danke.
Jetzt funktioniert's! (: