Hi,
ich muss eine doppelt verkettete Liste programmieren die eine binäre Datei öffnet diese ausliest und dann hinten an die Liste anhängt.Hierzu hab' ich mir bereits einige Gedanken gemacht und mich schlussendlich für das blockweise lesen und schreiben entschieden
(fread + fwrite).
Das Problem ist nun,dass wenn ich die zu lesende Datei öffne der Compiler(g++) einen Speicherzugriffsfehler meldet.
Mit einem anderen Compiler(z.B DevC++ unter Windows tritt dieser nicht auf - dafür wieder andere Fehler)
Ich habe bereits im Internet gesucht und dort hatte jemand den gleichen Fehler...hab dann seinen Quellcode mit meinem verglichen,konnte aber keinen Fehler finden.
Hier der Quellcode(ich hab ihn so weit als möglich gekürzt).
Struktur:
Das komische daran ist,dass der Compiler sofort nach dem Aufruf des Unterprogramms "oeffnen" den Speicherzugriffsfehler anzeigt.Er kommt also gar nicht zum Öffnen der Datei ehe er den Fehler anzeigt....
Ich bin ratlos....
p.s: Ich hoffe ihr wisst was ich meine.
mfg Schluchti
ich muss eine doppelt verkettete Liste programmieren die eine binäre Datei öffnet diese ausliest und dann hinten an die Liste anhängt.Hierzu hab' ich mir bereits einige Gedanken gemacht und mich schlussendlich für das blockweise lesen und schreiben entschieden
(fread + fwrite).
Das Problem ist nun,dass wenn ich die zu lesende Datei öffne der Compiler(g++) einen Speicherzugriffsfehler meldet.
Mit einem anderen Compiler(z.B DevC++ unter Windows tritt dieser nicht auf - dafür wieder andere Fehler)
Ich habe bereits im Internet gesucht und dort hatte jemand den gleichen Fehler...hab dann seinen Quellcode mit meinem verglichen,konnte aber keinen Fehler finden.
Hier der Quellcode(ich hab ihn so weit als möglich gekürzt).
Struktur:
Code:
struct kunde
{
char vorname[25];
char nachname[30];
char anrede [10];
int alter;
char wohnort[40];
int bankleit; //Bankleitzahl;
kunde *next; //Nachfolger
kunde *previous; //Vorgänger
};
Code:
void oeffnen(char *name) //Unterprogramm
{
FILE *datei;
kunde *zeiger; //Hilfspointer
zeiger=(kunde*)malloc(sizeof(kunde));
datei=fopen("/home/bernhard/liste.dat","r");
if(datei==NULL)
{
cout<<"Konnte Datei nicht oeffnen!"<<endl;
}
else
{
while(fread(&zeiger,sizeof(kunde),1,datei)==1)
{
upro(&zeiger); //start eines anderen Unterprogramms
}
}
Das komische daran ist,dass der Compiler sofort nach dem Aufruf des Unterprogramms "oeffnen" den Speicherzugriffsfehler anzeigt.Er kommt also gar nicht zum Öffnen der Datei ehe er den Fehler anzeigt....
Ich bin ratlos....
p.s: Ich hoffe ihr wisst was ich meine.
mfg Schluchti
Zuletzt bearbeitet: