Datei einlesen
-
Hallo,
ich habe versucht mehrere Dateien einzulesen:int main(int argc, char* argv[]) { if(argc==1) { cout << "Fehler: keine Dateien angegeben"<<endl; return 0; } for(int i=1; i<argc; ++i) { ifstream quelle; quelle.open(argv[i],ios::binary|ios::in); if(quelle) { char* buffer; int length; cout << "-----" << argv[i] << "-----"<<endl; quelle.seekg (0, ios::end); length=quelle.tellg(); quelle.seekg(0,ios::beg); buffer=new char[length]; quelle.read (buffer,length); quelle.close(); cout << buffer; delete[] buffer; cout << endl; cout << "---------------------"; cout << endl<<endl; }else{ cout << "Datei: " << argv[i] << " nicht gefunden!"; } } return 0; }
Es tritt folgendes Problem auf. Wenn ich 2 Dateien öffne:
Datei 1:
Hallo Test 123
Datei2:
Noch ein Test
Bekomme ich als Ausgabe bei Datei 2:
Noch ein Test 123
Also irgendwie wird der Buffer nicht richtig gelöscht. Aber ich lösche den doch nach jedem einlesen, oder etwa nicht?
-
buffer
ist nicht nullterminiert, daher erzeugst du undefiniertes Verhalten, wenn du es auf perstd::cout << buffer
ausgibst. Entweder verwende einen nullterminierten Puffer oder verwendestd::ostream::write
.Grüssli