Datei mit Kontrolle öffnen
-
Hi Leute,
will ne Datei per Filepointer öffnen um zu sehen ob Sie vorhanden ist,
denn falls nicht müsste mir ja fopen als Rückgabewert NULL liefern....also ich habe das ganze so probiert:
#include <stdio.h> void main () { char i; FILE *fp[4]; for(i=0;i<4;i++) { if((fp[i]=fopen("C:\\prog\\beleg2\\daten_[i].txt","r"))==NULL) printf("\nDateioeffnungsfehler"); } }Leider klappt das nich! Wenn ich den pfad eindeutig eingebe also anstelle von daten_[i] einfach daten_1, daten_2 usw. eingebe da klappt alles wunderbar...!
Hat jemand mal nen Tipp?
Danke!
-
Also erstmal sieht es so aus, als hättest du einen Denkfehler begangen.
Dasi=0;i<4;sollte wohl eher
i='0';i<'4';heißen.
So, jetzt zu deiner Frage:
Das liegt daran, dass deine Pfadangabe ein String-Literal ist. Das "i" ist hier einfach ein Buchstabe, und kein Variablenbezeichner.
Du musst den String also aus einzelnen Bestandteilen zusammensetzen.
Das geht am einfachsten mit einem stringstream:// dafür musst du sstream includen std::stringstream s; s << "C:\\prog\\beleg2\\daten_[" << i << "].txt"; /*...*/ fopen(s.str(), "r") /*...*/Außerdem: da du hier im C++- und nicht im C-Forum postest, solltest du besser fstream statt FILE verwenden.
-
Wenn ich das verstehen würde dann würde es mir auch bestimmt helfen....;-)
Gibt es eine möglichkeit es so zu machen wie ich es mir gedacht habe?
Es sollen halt 4 Dateien geöffnet werden.
Danke!
-
Hallo
schau in die C++FAQ hier im Forum, Thread Dateien und Ströme
bis bald
akari
-
habe leider nichts passendes gefunden....
habe mal den Code erweitert damit ihr sehen könnt in welche richtung das ganze gehen soll:
void main () { char i,d=0; int kdn; FILE *fp[100]; for(i=0;i<4;i++) { if((fp[i]=fopen("c:\\prog\\beleg2\\daten_[i].txt","r"))==NULL) printf("\nDateioeffnungsfehler"); else printf("Datei_[i] vorhanden!"); d++; } printf("\nEs sind %d Dateien vorhanden",d); printf("\nBitte geben Sie die Kundennummer ein die ueberprueft werden soll\n"); scanf("%s",&kdn); }Das kommische ist das er anstelle von Variable d einfach die i ausgibt...
Hab echt ein plan, bitte um hilfe...!
-
Hallo
wenn du wirklich auf dieser Seite nachgeschaut hättest, hättest du die Klasse std::ifstream gefunden, mit der in C++ Dateioperationen gemacht werden (im Gegensatz zu dem veralteten C-Style fopen).
Und dort ist mit .is_open() auch die Methode gezeigt, mit der du das Öffnen überprüfen kannst./Edit : Desweiteren must du natürlich auch die Hinweise zu std::stringstream beachten, um deinen Dateinamen korrekt zusammenzubauen.
bis bald
akari