Datei einlesen
-
Hi, ich würde gerne eine Datei einlesen, nur leider bekomme ich immer ne Fehlermeldung die ich irgendwie nicht in Griff bekomme.
dat = fopen(argv[i],"r"); size_t size = fseek(dat, 0, SEEK_END); rewind(dat); if((Buffer=malloc(size))!=NULL) { fgets(Buffer,size,dat); if(strcmp(Buffer,"TAG")) { printf("In dieser Datei wurde ein TAG abgespeichert\n"); } free(Buffer); }
Warum geht das nicht ?
Ich bekomme da in der Zeile mit malloc : '=': 'void *' kann nicht in 'char *' konvertiert werden...
-
Buffer=(char*)malloc(size)
-
DocJunioR schrieb:
Buffer=(char*)malloc(size)
aber bitte ohne den cast.
-
compilieren tut ers nun :), aber was meinst du mit, aber ohne den cast ?h
-
toxor schrieb:
compilieren tut ers nun :), aber was meinst du mit, aber ohne den cast ?h
naja, den rückgabewert malloc braucht und sollte man auch nicht casten. deine fehlermeldung 'kann void* nicht in char* konvertieren' ist mir allerdings schleierhaft. normalerweise geht das.
-
hmmm ok , also danke, aber irgendwie macht der Code immernoch nicht was er soll ^^, nämlich einfach die Datei einlesen und den String vergleichen. Irgendwie findet er mir jetzt immer den gesuchten String...auch wenn er nicht vorhanden ist....
Kann mir das jemand erklären ? Gibts ne bessere Methode eine Datei zu lesen ?
-
strcmp gibt 0 zurück, wenn die strings identisch sind. du prüfst in dem 'if' genau das gegenteil, aber vielleicht wäre in deinem fall 'strstr' sowieso die bessere funktion?
-
Stimmt du hast Recht, strcmp gibt NULL zurück, hatte ich vergessen, aber nun isses so das mir immer zurückgegeben wird das "TAG" gefunden wurde ^^
-
weiss ich auch nicht. wieso holst du dir immer einen neuen buffer und schmeisst ihn danach wieder weg? einmal holen und dann wiederverwenden würde doch auch gehen.
-
malloc-freak schrieb:
naja, den rückgabewert malloc braucht und sollte man auch nicht casten. deine fehlermeldung 'kann void* nicht in char* konvertieren' ist mir allerdings schleierhaft. normalerweise geht das.
fiellaicht hat er ne *.cpp datei kompilirt ?
-
agga ugga schrieb:
fiellaicht hat er ne *.cpp datei kompilirt ?
stimmt, das könnte sein. dem hund wurden nicht nur beine angenagelt, sondern auch einige amputiert.
-
octopus-fan schrieb:
stimmt, das könnte sein. dem hund wurden nicht nur beine angenagelt, sondern auch einige amputiert.
?? welchem hund ??
-
wonder whether *** schrieb:
welchem hund
der von dem spruch: "C++ is an octopus made by nailing extra legs to a dog"