doppelt verkettete Liste - Datei öffnen und anhängen

Schluchti

Grünschnabel
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:

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:
Also das was mir eben so aufgefallen ist, ist dass du ein Anführungszeichen vergessen hast:
Code:
datei=fopen("home/bernhard/liste.dat","r");
 
Hi MSAB,

uups,das ist wohl bei der "Kürzungsaktion" unter den Tisch gefallen,im Original Programm ist es vorhanden.

Das komplette Programm(mit allen Unterprogrammen) ist über 500 Zeilen lang...

Es enthält folgende Unterprogramme:

.)Einlesen
.)Ausgeben
.)Liste in die Datei schreiben
.)Datei öffnen und den Inhalt an das Ende der Liste hängen
.)Element löschen
.)Element suchen

all die oben genannten Programme funktionieren anstandslos nur bei dem Öffnen und dem anhängen tritt dieser Fehler auf...:(

mfg Schluchti
 
Zurück