Lesezeiger-Problem
-
Guten Tag,
Was mein Problem ist :
z. B. file "test.txt" :
This is a
testDer Lesezeiger ist z. B. bei 't' ( nächste Zeile ) . Wenn ich nun versuche anhand eines Wertes einer Variable den Lesezeiger nach links zu verschieben , wird das Zeichen 'h' nicht eingelesen.
int iverschieben = -9 ( \n berücksichtigt ) fseek(file, iverschieben, SEEK_CUR);
Wenn der Lesezeiger nicht eine Zeile nach oben springen muss, dann funktioniert es meistens. Was ist das Problem?
-
Ich glaube es reicht wennn du einen Thread erstellst, schau mal rein hab dir schon geantwortet
-
Deine Antwort ist leider keine Antwort auf mein aktuelles Problem.
Das Problem ist --> Lesezeiger wird nicht richtig verschoben ( oben im Beispiel ). Auf einmal werden manche Zeichen nicht eingelesen.
-
Deine Antwort ist leider keine Antwort auf mein aktuelles Problem.
Trotzdem reicht ein Thread.
Wie öffnest du die Datei mit fopen ?? Versuch es im binary modus, fallst du das noch nicht gemacht hast. Wo anders kann der Fehler ja nicht liegen ?!
Und hast du die andere Funktion, die ich im anderen Thread geschrieben habe, auch versucht ?? Ich hatte damit noch nie Probleme. Ich denke eher du hast die Datei im Text-modus geöffnet und jetzt gibts Probleme bem '\n'.
Und noch ein Tipp für die Zukunft, es wäre klug von dir wenn du dein Problem etwas genauer beschreiben würdest
Sag doch was anstatt dem 'h' ausgegeben wird ?
-
Hallo,
Ja ich glaube auch , dass es Probleme mit '\n' gibt.
In einer txt-file ist eine Leerzeile :2 ASCII-Zeichen ( CR, LF ) . Wenn ich jedoch 2 Zeichen , nicht eines ( \n ) berücksichtige, dann gibt es ein Endlosschleife
-
Poste mal den Code der Funktion, oder des ganzen Programms.
-
Der Code :
char ctag[9];
....
memset(ctag, '\0', 9);
...in ctag ist z. B. --> <title>
...long int ianzahlgeholtezeichen = 0; long int i20 = 0; for(i20=0; i20<=8; i20++) { if(ctag[i20] != '\0') { ianzahlgeholtezeichen++; } } /* < uber > --> 8 Zeichen --> Lesezeiger bei Leerzeichen*/ long int iverschiebenum = 0; iverschiebenum = ianzahlgeholtezeichen-1; /*iverschiebenum == 1 --> iverschiebenum == -1 */ iverschiebenum *= -1; if(ctag[0] == '<' && ibody == 0) { fputs("<", file_ziel); } else { fputc('<', file_ziel); } fseek(file_quelle, iverschiebenum, SEEK_CUR); }
-
Sehr wichtig!! :
Ich möchte bitte , dass dieser Thread hier , dieses Thema gelöscht wird.
Das Problem ist gelöst
Bitte diesen Thread hier löschen.
-
Woran lag der Fehler ?