000
30.10.2003, 23:56 Uhr
~testusr
Gast
|
Ja also hi,
ich hoffe hier kann mir jemand helfen, ich bin schon seit einer ganzen zeit am C++ Programmieren, aber sowas blödes hab ich im leben noch nicht erlebt. Irgendwie stellt sich eine scheinbar triviale aufgabe als großes Problem heraus.
Eigentlich geht es darum zu überprüfen ob es ein File gibt. Gibt es dieses File nich erstelle ich es initialisiere es in dem ich einen Wert 0 Integer reinschreibe der File wird geschlossen. Dann wieder zum lesen geöffnet, allerdings liest der da nix raus
ein int counter = 9999; inFile >> counter;
bringt gar nix obwohl der file geöffnet ist. Der Wert von Counter bleibt auf 9999. Ein inFile.tellg(); gibt als ergebniss 0 zurück also am anfang des Files. Aber er liest es einfach nicht. Ist der File jedoch einmal erstellt. ist der 1. Lesevorgang erfolgreich. Schliesse ich jedoch das File wieder und schreibe etwas rein. Öffne es dann erneut zum lesen tritt wieder das problem auf das er ganr nix macht.
Hier mein kleines Problemprogramm:
C++: |
#include <iostream> #include <fstream>
using namespace std;
int main(int argc, char * argv[]) // --edit: Pablo. Ich habe mit Absicht von void zu int gewächselt. So ist nun ANSI C/C++, int main { int counter = 0; int test = 9999; ifstream inFile; ofstream outFile;
inFile.open("./Memory.txt"); if (!inFile.is_open()) { inFile.close(); outFile.open("./Memory.txt"); if (!outFile.is_open()) { cout << "Error creating file ... exiting ... \n"; exit(0);} outFile << counter; outFile.flush(); outFile.close();
inFile.open("./Memory.txt"); if (!inFile.is_open()) { cout << "Error opening created File Memory.txt... exitin\n"; exit(0);} }
inFile.seekg(0,ios_base::beg); if (inFile.eof()) {cout << "woops file ende erreicht ?!?!?!" << endl; } inFile >> test; counter = test; inFile.close();
cout << "Thorsten Rühl: \n Ich bin hier die Nummer: " << ++counter << endl;
outFile.open("./Memory.txt"); outFile << counter; outFile.flush(); outFile.close();
cin.get();
inFile.open("./Memory.txt");
cout << "Vor Seekg: " << inFile.tellg() << endl; inFile.seekg(0,ios::beg); cout << "Nach Seekg: " << inFile.tellg() << endl; if (inFile.eof()) {cout << "woops file ende erreicht ?!?!?!" << endl; } inFile >> counter; inFile.close();
cout << "Im Moment laufen noch " << --counter << " Prozesse\n";
outFile.open("./Memory.txt"); outFile << counter; outFile.flush(); outFile.close();
}
|
tut mir leid wenn ich euch zumülle aber ich hab schon jeden gefragt der auch nur einen hauch ahnung von dem kram hat und keiner kann mir erklären was ich übersehen habe. Also hoffe ich auf einen Typ aus euren reihen.
PS. Weiss jemand ob es in ordnung ist ein File gleichzeitig zum lesen und zum schreiben zu öffnen ? ich hatte es als erstes versucht mit
fstream file("./Memory.txt", ios::in | ios::out); das sollte doch eigentlich gehen oder nicht ? --- ich weiss nicht mehr weiter.
Das BS unter das dass programm laufen soll ist Windows 2000
So ich hoffe das war euch nicht zu lang
LG Thorsten
--edit: Pablo. Längere Codes haben wir schon Mal gehabt, aber ohne [ cpp ] tags sieht nicht gut aus. [ cpp ] tags gesetzt -- Dieser Post wurde am 31.10.2003 um 01:11 Uhr von Pablo Yanez Trujillo editiert. |