我有一个文件。我读了文件的大小。然后我一次循环读取两个字节,直到到达文件末尾。每次读取操作后,我将当前位置增加 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;
}