Ich versuche, eine Zeile aus einer Datei zu lesen und zu Beginn der gerade gelesen Zeile zurück:fseek Verwendung in meinem Dateizeiger resultierende EOF springen in Richtung
FILE *fp = fopen("C:\\F2BJROP1.phn", "r+");
while(1){
/**Data reading**/
fscanf(fp, "%f", &temp1);
if(feof(fp))
break;
if(isvoiced(temp1)==1){ /** isvoiced() has nothing to do with this fp. **/
pos = ftell(fp);
voicedIntervs[k++] = temp1;
fscanf(fp, "%f", &temp1);
voicedIntervs[k++] = temp1;
fseek(fp, pos, SEEK_SET); /** Trying to go back to pos **/
}
}
Aber kurz nach dem fseek, ich beobachte dass fp in Richtung EOF springt. Ich möchte, dass mein fp wieder in der Position ist, die in pos gespeichert ist. Kein anderer fp ist irgendwo im Programm deklariert.
Ich weiß, fp erreicht EOF, weil ich debuggte und den Wert sah.
Ich bin auf dem 10. Windows
Sie besser von den Rückgabewert testen tun würde ' fscanf' (die Anzahl der erfolgreich gelesenen Elemente) als mit 'feof'. Du hast auch die nächste Verwendung 'fscanf' nicht überprüft ... schlecht! –
@Weather Vane: Alles klar, aber meine Anforderung war, dass fseek den Dateizeiger in die Position in der Variablen fp –
zurückpositionieren sollte Ich sehe, dass Sie gerade Ihren Code bearbeitet haben. Es ist also nicht dein Code. Bitte posten Sie das [Minimale, vollständige und verifizierbare Beispiel] (http://stackoverflow.com/help/mcve), das zeigt, was Sie versucht haben. –