Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » File erstellen-öffnen-lesen - Problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.10.2003, 08:53 Uhr
virtual
Sexiest Bit alive
(Operator)


Naja, ich meine es liegt daran, daß Du zweimal die Memory.txt beschreibst: du liest einen Wert aus, sagen wir mal 13. Dann schreibst Du 14 rein und nach dem cin.get wieder eine 13. Ist das beabsichtigt?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.11.2003, 01:32 Uhr
~testusr
Gast


Ja das ist beabsichtigt, es geht darum ein Programm zur gleichen Zeit mehrmals aufzurufen und es gibt dann aus wieviel instanzen dieses Programms laufen ... aber ich bin der sache schon einen schritt näher gekommen, es hat was mit dem failbit zu tun was aus irgendeinem Grund ständig gesetzt wird...

danke aber trotzdem ))

LG
Thorsten
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: