Ошибка при позиционировании в файле
От: Mikula  
Дата: 13.07.11 10:00
Оценка:
Что не так? Мне надо сходить в другое место файла, считать оттуда данные, вернуться и продолжить чтение. По сути не работает следующий упрощенный вариант.
FILE* fSrc = _wfopen(src, _T("r"));
long pos = ftell(fSrc);
char ch;

fread(&ch, sizeof(char), 1, fSrc);
fseek(fSrc, pos, SEEK_SET);
fread(&ch, sizeof(char), 1, fSrc);


По-моему, ch должны быть одинаковыми, но они разные. Сложилось впечатление, что второе чтение происходит на 5 байт позднее того места, где я ожидал (где сохранил позицию).

Пробовал комбинацию fgetpos(&pos), fseek(куда надо), fsetpos(&pos) — то же самое.
Re: Ошибка при позиционировании в файле
От: Mikula  
Дата: 13.07.11 10:06
Оценка:
...Причем в большинстве случаев здесь все работало. А с одним файлом вышла ошибка — стал локализовывать и пришел к этому месту.
Re[2]: Ошибка при позиционировании в файле
От: Mikula  
Дата: 13.07.11 10:27
Оценка:
Может, Watch неправильно показывает? Я использую MS VS 2010 Express.
Re: Ошибка при позиционировании в файле
От: mike_rs Россия  
Дата: 13.07.11 10:35
Оценка: +1
Здравствуйте, Mikula, Вы писали:

M>Что не так? Мне надо сходить в другое место файла, считать оттуда данные, вернуться и продолжить чтение. По сути не работает следующий упрощенный вариант.


M>FILE* fSrc = _wfopen(src, _T("r"));

M>Пробовал комбинацию fgetpos(&pos), fseek(куда надо), fsetpos(&pos) — то же самое.

попробуй открыть файл как "rb"
Re[2]: Ошибка при позиционировании в файле
От: Mikula  
Дата: 13.07.11 10:48
Оценка:
Спасибо, выручил! Сработало.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.