Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » eof()

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 < [ 2 ]
000
20.04.2006, 20:06 Uhr
ref



ein kleines Text Dokument wird mit diesem code geschrieben.


C++:
#include<iostream>
#include<fstream>

using namespace std;
int main()
{
    fstream file("c\\test.txt", ios::in | ios::out);

    if (file.is_open())
    {
          file<<"Dies ist die erste Zeile"<<endl;
                  file<<"Dies ist die zweite Zeile "<<endl;
    }
    

    const int SIZE = 100;
    char buffer[SIZE];

    while (!file.eof())  // warum das file-ende mit eof() nie erreicht wurde
    {
       file.getline(buffer,SIZE);  // und hier stecken geblieben ist
       cout<< buffer << endl;   // das möchte ich wissen, danke in voraus
                                                        
    }
    return 0;
}




--
Man kann ein Problem nicht mit der gleichen Denkweise lösen, mit der es erschaffen wurde. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.04.2006, 20:24 Uhr
jeller



oder so :
#include <stdio.h>
int main ()
{
FILE * pFile;
pFile = fopen ("c++test.txt","wt");
if (pFile!=NULL)
{
fputs ("das ist der erste teil\nund ich glaub dies is der zweite teil",pFile);
fclose (pFile);
}
return 0;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.04.2006, 20:30 Uhr
jeller



hier kannste das nach lesen dort hab ich den anderen weg gefunden ich hoffe er hatt dir geholfen .
www.cplusplus.com/ref/cstdio/fopen.html

mfg jeller
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.04.2006, 20:51 Uhr
tobZel



jeller machts jetzt halt mit C und net mit C++
Aber dein Prob ist das:

C++:
    fstream file("c\\test.txt", ios::in | ios::out);


Der Datei name ist ungültig!! Und benutz lieber den "/" statt "\\" (2 wegen escapen)

So kannst au machen:

C++:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

using namespace std;
int main()
{
    fstream file("c:/test.txt", ios::in | ios::out);

    if (file.is_open())
    {
          file<<"Dies ist die erste Zeile"<<endl;
                  file<<"Dies ist die zweite Zeile "<<endl;
    }
    string buffer;


    while (!file.eof())
    {
       getline(file,buffer);
       cout<< buffer << endl;
                                                        
    }
    return 0;
}




Bearbeitung von FloSoft:

Fehler korrigiert:

entweder \ oder / windows nimmt beides als "Pfad-Trennzeichen" an, um \ in C/C++-Programmen zu schreiben muss man \\ benutzen, da \ das escape-zeichen ist.

// ist falsch als "Pfad-Trennzeichen" ...


--
Wer länger lebt stirb früher...

Dieser Post wurde am 20.04.2006 um 22:02 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.04.2006, 22:31 Uhr
ref



also gut, die frage ist immer noch offen , die methode eof() gibt true zurück wenn
das Dateiende erreicht wurde und nicht weiter gelesen werden kann, und false wenn
das dateiende noch nicht erreicht wurde..
in diesem beispiel läuft die while schleife ohne ende .. das dokument aber HAT EIN ENDE
es besteht aus zwei zeilen
--
Man kann ein Problem nicht mit der gleichen Denkweise lösen, mit der es erschaffen wurde. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.04.2006, 23:07 Uhr
Pler
Einer von Vielen
(Operator)


Also ich versteh überhaupt nicht was hier gemacht wird.
Du schreibst erst in die Datei. Und dann ließt du gleich wieder?
Funktioniert das? Bin kein fstream-Experte, aber wahtscheinlich solltest du die Datei nach dem Schreiben schließen. (Das Schreiben wird ja auch vorher gepuffert)
Zum Lesen dann neu Öffnen.
Oder aber irgendwie den Schreib-/Lese-Zeiger umsetzen.

Wie äußert sich denn, dass die Schleife immer weiter läuft?

Möglicherweise wird EOF nicht erreicht, da die Datei ja auch zum Schreiben geöffnet ist.

Noch ne Frage:
Gibt es überhaupt irgendein Beispiel, wo man ne Datei sowohl zum Lesen, also auch zum Schreiben öffnet?
Also ich hab das noch nie gemacht.

Dieser Post wurde am 20.04.2006 um 23:08 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.04.2006, 23:10 Uhr
ref



schon gefunden, die zwei punkte c : \\ vergessen


C++:
fstream file("c\\test.txt", ios::in | ios::out);



--
Man kann ein Problem nicht mit der gleichen Denkweise lösen, mit der es erschaffen wurde. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.04.2006, 23:36 Uhr
Spacelord
Hoffnungsloser Fall


Dein Code sollte aber trotzdem nicht tun was er soll.
Dir fehlt da nen seekg(0),womit du den get Pointer wieder auf den Anfang der Datei setzt.

C++:
    fstream file("C:\\test.txt");
    if (file)
    {
          file<<"Dies ist die erste Zeile"<<endl;
                  file<<"Dies ist die zweite Zeile "<<endl;
    }
    string buffer;
    file.seekg(0);
    while (getline(file,buffer))
       cout<< buffer << endl;
    file.close();



MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
20.04.2006, 23:55 Uhr
ref



da hast du vollig recht , deshalb war der buffer leer.. da der dateizeiger auf dateiende
gesetzt war.
--
Man kann ein Problem nicht mit der gleichen Denkweise lösen, mit der es erschaffen wurde. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.04.2006, 13:32 Uhr
jeller




Zitat von tobZel:
jeller machts jetzt halt mit C und net mit C++

funktioniren tut es aber trotzdem
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: