Я пытаюсь прочитать одну строку из файла и вернуться к началу только для чтения строки:Использование FSEEK в результате моей filepointer прыгает в сторону EOF
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 **/
}
}
Но только после FSEEK, наблюдаю что fp переходит к EOF. Я хочу, чтобы мой fp возвращался в позицию, сохраненную в pos. Никакой другой fp не объявлен нигде в программе.
Я знаю, что fp достигает EOF, потому что я отлаживал и видел значение.
Я на ОС Windows 10.
Вы бы лучше испытывать возвращаемое значение ' fscanf' (количество успешно прочитанных позиций), чем использование 'feof'. Вы не проверяли следующее использование 'fscanf' либо ... плохо! –
@ Weather Vane: Хорошо, но мое требование состояло в том, что fseek должен переместить файл-указатель обратно в позицию, хранящуюся в переменной fp –
Я вижу, что вы только что отредактировали свой код. Так что это не ваш код. Пожалуйста, напишите [Минимальный, Полный и Подтверждаемый пример] (http://stackoverflow.com/help/mcve), который показывает, что вы пробовали. –