我正在尝试读取同时写入磁盘的文件。我需要读取特定大小的块。如果读取的大小小于特定大小,我想取消读取文件(类似于 ungetc 所做的,而不是 char[])并重试。附加到已经读取的字节对我来说不是一个选择。
这怎么可能?
我尝试通过以下方式保存当前位置:
FILE *fd = fopen("test.txt","r+");
fpos_t position;
fgetpos (fd, &position);
然后读取文件并将指针放回其读取前的位置。
numberOfBytes = fread(buff, sizeof(unsigned char), desiredSize, fd)
if (numberByBytes < desiredSize) {
fsetpos (fd, &position);
}
但这似乎不起作用。