Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Auslesen funzt nicht

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
28.02.2004, 18:44 Uhr
cmos



Hallo,
das Auslesen klappt hier nicht ganz.
Ich bekomme nur ein Zeichen ausgegeben.
Bitte keine Kommentare über den Sinn dieses Quellcodes
datei.h

C++:
#ifndef datei_h
#define datei_h datei_h
#endif
class datei
{
    private:
        char *lesen;
                
    public:
        datei();
        ~datei();
        char read_file(char *);

};


datei.cpp
Warum FILE hier nur Gloabl geht weiß ich nicht

C++:
#include "datei.h"
#include <iostream>
using namespace std;

FILE *file;

datei::datei()
{
    lesen=new char[1];

}
datei::~datei()
{
//    delete[] lesen;
    fclose(file);
}

char datei::read_file(char *openfilename)
{
    
    file=fopen(openfilename,"r+");
    if(file==NULL)
    {
        cout << "\nFehler!\n";
    }
    else
    {
        
        cout << "\n\n";
        fread(&lesen,sizeof(*lesen),1,file);
        while(!feof(file))
        {
            return *lesen;
            if(feof(file))
            {
                cout << "\n\n";
            }
            
        }
    }

}


dateimain.cpp

C++:
#include "datei.h"
#include <iostream>
using namespace std;

int main()
{
    char *name=new char[11];
    datei *pObjdatei;
    pObjdatei=new datei;
    cout << "Dateiname: ";
    cin >> name;
    
    cout << pObjdatei->read_file(name);

    delete (pObjdatei);
    
    return 0;
}



Bekomme nur ein Zeichen gezeigt und dann ist es nicht
ein Buchstabe. Hatte mal funktioniert das ich statt des
Zeichens den Buchstaben hatte, weiß aber nicht mehr wie.
Hauptproblem bleibt aber das nur ein Zeichen ausgegeben wird
obwohl die Funktion doch alles auslesen müßte.
Habe dann probiert

C++:
                 fread(&lesen,sizeof(*lesen),1,file);
        while(!feof(file))
        {
            return *lesen;
                         delete[] lesen;
                         lesen=new char[1];
            if(feof(file))
            {
                cout << "\n\n";
            }
            
        }


Folge ist ein Programmabsturz.
Wenn ich im destruktor delete[] lesen aufrufe stürzt es ebenfalls
ab.

Kann mir bitte jemand weiterhelfen ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.02.2004, 16:21 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich habe mir den Code nicht in allen Details beäugt, aber Du liest nur ein Zeichen, dh das Programm macht da, was Du geschrieben hast und keine Zauberei.

Daß Dein Programm mit dem delete[] im dtor abstürzt dürfte an weiteren Fehlern liegen, nicht am Delete selbst. Debuggen hilft.
--
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
29.02.2004, 16:35 Uhr
Pablo
Supertux
(Operator)



Zitat:
cmos postete
Hallo,
das Auslesen klappt hier nicht ganz.
Ich bekomme nur ein Zeichen ausgegeben.
Bitte keine Kommentare über den Sinn dieses Quellcodes
datei.h

C++:
#ifndef datei_h
#define datei_h datei_h
#endif
class datei
{
    private:
        char *lesen;
                
    public:
        datei();
        ~datei();
        char read_file(char *);

};





Wenn du die Guards für Header Dateien Datein benutzet, dann benutze überall, so

C++:
#ifndef datei_h
#define datei_h datei_h

class datei
{
    private:
        char *lesen;
                
    public:
        datei();
        ~datei();
        char read_file(char *);

};
#endif


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.02.2004, 18:01 Uhr
cmos



@virtual...
Da fehlt noch ein fread in der while schleife.
Habe ich vergessen beim posten.
Daran liegts aber auch nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.02.2004, 18:48 Uhr
virtual
Sexiest Bit alive
(Operator)


@cmos
Ja, aber selbst Dann: Du belegst Speicher für ein Zeichen, würdest in dieser Schleife dann eben auch nur ein Zeichen permanent Speichern können. Ich Denke, du mußt halt erstmal die Dateigröße ermitteln, mit der Dateigröße dann das new machen (new char[Dateigroesse]) und dann ein entsprechendes fread machen
--
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
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: