Hile bei FilePointer benötigt
-
Hallo Liebe C++ Freunde:
Hier zunächst mein Programm:#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string> #include<iostream> #include<errno.h> #include<fcntl.h> #include<sys/stat.h> #include<vector> using namespace std; class kontaktlist { public: char *puffer,*cpuffer,*token; kontaktlist(char* begin,char *neu) { readlist(begin); cout<<"Fehler"<<endl; writelist(begin,neu); } void readlist (char *begin){ string end=".c"; string all = begin + end; char *next = &all.at(0); cout<<next<<endl; FILE *pfile = fopen(next,"a+"); if(pfile==NULL) { cout<<"Error: "<<strerror(errno)<<endl; }else{ fseek(pfile,0,SEEK_END); int size = ftell(pfile); rewind(pfile); cout<<size<<endl; fread(puffer,1,size,pfile); puffer[size] = '\0'; cout<<"Datei "<<next<<" gelesen"<<endl; cout<<puffer<<endl; } fclose(pfile); } void writelist(char *begin_w,string neu){ string end_w =".c"; string all_w = begin_w + end_w; char *next_w = &all_w.at(0); cout<<next_w<<endl; FILE *pfile_w = fopen(next_w,"ab+"); if(pfile_w==NULL) { cout<<"Error: "<<strerror(errno)<<endl; fclose(pfile_w); }else{ fseek(pfile_w,0,SEEK_END); int size_w = ftell(pfile_w); neu= neu + ';'; char *neu_w = &neu.at(0); fwrite(neu_w,1,size_w,pfile_w); cout<<"Datei "<<next_w<<" neugeschrieben"<<endl; cout<<neu_w<<endl; fclose(pfile_w); } } } }; int main(){ kontaktlist test("marko","buh"); return 0; }Es soll:
wenn readlist aufgerufen wird die Datei "marko.c" öffnen wobei nur der Dateiname eingegeben werden soll. Wenn die Datei nichgt existiert, so legt er sie an.
Amschließend soll er die Datei lesen und den Inhalt zurückgeben und ausgeben.
Writelist ist dazu gedacht, dass er die datei "marko.c" öffnet (wobei wieder nur marko eingegeben wird) und einen neuen Inhalt an den alten, in anhängen soll. jedoch soll an dem neuen Inhalt in der Methode ein ; angehängt werden (siehe neu= neu + ';'; ) und die Datei natürlich wie nach readlist schließen. Die Methoden sollen unabhängig voneinander sein daher das doppelte öffnen und schließen.
Nun zu den Bugs::
1)wenn readlist eine neue Datei anlegt is sie demzufolge leer und writelist weigert sich da etwas reinzuschreiben.
2)schreibt mir readlist (wenn ich manuell ein Zeichen in die Datei reingeschriebn habe , hier ein
;b statt ;buh; obwohl laut cout<<neu_w<<endl; ein buh; in der Variablen drinne is
3.) ist der Inhalt der Datei länger als 3 Zeichen so meldet re4adlist vor fclose(bla) einen Speicherzugriffsfehler.und es soll unter Linux laufen !!
pls helped mee
-
der Smily soll ein
sein
ps: verschrieben das soll Hilfe heißen oO