Date: 13.10.2019 8:13:23
Попробуйте добавить проверку ошибок fsetpos/fread, как-то так:
#include <stdlib.h> #include <stdio.h> int main( int argc, char *argv[] ) { const fpos_t newPos = 1000; const size_t count = 4096; char data[count]; size_t readcount; int result; FILE* handle = fopen("D:\\Test\\File.txt","rb"); result = fsetpos( handle, &newPos ); if(result!=0) printf("fsetpos failed: %d\n",result); readcount = fread( data, 1, count, handle ); if(readcount < count) { result = ferror(handle); if(result!=0) printf("fread failed: %d\n",result); } else { printf("fread success: %d bytes read\n",(int)readcount); printf("data: [%.20s]\n",data); } const fpos_t nextPos = 2000; const size_t nextCount = 1000; result = fsetpos( handle, &nextPos ); if(result!=0) printf("fsetpos failed: %d\n",result); readcount = fread( data, 1, nextCount , handle ); if(readcount < nextCount) { result = ferror(handle); if(result!=0) printf("fread failed: %d\n",result); } else { printf("fread success: %d bytes read\n",(int)readcount); printf("data: [%.20s]\n",data); } fclose(handle); getchar(); }
И покажите, что выведется у вас.
>Буду признателен, если вы сообщите: о моем возможно неправильном использовании библиотеки; когда будет исправлена бага; в какой версии SDK проблемы не наблюдается.
Universal CRT - компонент Windows, который обновляется вместе с Windows Update, поэтому тут скорее важна версия Windows, чем SDK. SDK предоставляет лишь заголовочные файлы и библиотеки импорта. Но я лично сомневаюсь, что в функции fread Universal CRT может быть баг - это было бы слишком болезненно очевидно, так как >50% программ зависят от нее и соответственно работали бы работали неправильно.
Автор: VadimTagil