У меня есть файл. Я прочитал размер файла. Затем я читаю по два байта за раз, пока не доберусь до конца файла. После каждой операции чтения я увеличиваю текущую позицию на 2, однако позиция не увеличивается после того, как я получу половину размера файла, операция fread будет читать 0 байтов.
программа считывает размер файла. Я выполняю fread (2 байта каждый раз), пока текущая позиция не станет равной размеру файла.
Он читает 22915 байтов для размера файла
Он увеличивает позицию на 2 после каждого чтения, однако, когда текущая позиция достигает 11459, что составляет половину размера файла, он будет читать нулевые байты, таким образом, входя в бесконечный цикл.
FILE *file;
char *file_name;
int readCount = 0;
int position = 0;
int fileSize;
unsigned short mem_accesses;
file_name = "sample.txt";
/** open the file */
file = fopen(file_name, "rb");
fseek(file, 0, SEEK_END);
fileSize = ftell(file);
rewind(file);
while(position<fileSize){
mem_accesses = getNumberAccesses();
printf("position: %d filesize: %d\n",position, fileSize);
}
unsigned short getNumberAccesses(){
/** calculate number of accesses for process */
unsigned short val;
readCount = fread(&val, sizeof(val), 2, file);
position += readCount;
printf("read count: %d\n", readCount);
return val;
}