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