Auslesen geht nicht...
-
Hallo,
das Auslesen klappt hier nicht ganz.
Ich bekomme nur ein Zeichen ausgegeben.
Bitte keine Kommentare über den Sinn dieses Quellcodes
datei.h#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#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; fread(&lesen,sizeof(*lesen),1,file); if(feof(file)) { cout << "\n\n"; } } } }
dateimain.cpp
#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 probiertfread(&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 ?
-
Benutze statt fopen und fclose doch lieber die C++ Funktionen der fstream klasse:
FAQ: http://www.c-plusplus.net/forum/viewtopic.php?t=39469MfG Max
-
Hallo,
mit fstreams habe ich das gleiche problem.
[cpp]
while(quelle.get(ch))
{
return *ch;
}
[cpp]
Bei dieser Variante habe ich das selbe Problem.
Deswegen hatte ich es mit fopen probiert
-
fread(&lesen,sizeof(*lesen),1,file);
Warum übergibst du hier die Adresse von lesen? lesen ist doch schon ein Pointer.
-
Ich habs noch nicht anders probiert.
Hmm.. ist das Syntaktisch falsch ?
Ich dacht immer wenn das & vor nem Pointer
steht wird die Adresse ausgegeben, deswegen das &
Allerdings bin ich mit mit dem sizeof nicht klar ob
das hinhaut. Habe mir mal sizeof ausgeben lassen.
Es kam 1 raus. char ist ja 1 byte groß aber doch auch nur
bei einem Zeichen, oder?