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 ? |