C++ 未读C++;
我正在尝试读取同时写入磁盘的文件。我需要阅读特定大小的块。如果读取的大小小于特定的大小,我希望取消读取该文件(类似于ungetc所做的,而不是char[]),然后重试。附加到已读取的字节不是我的选项 这怎么可能 我尝试通过以下方式保存当前职位:C++ 未读C++;,c++,c,io,fstream,libc,C++,C,Io,Fstream,Libc,我正在尝试读取同时写入磁盘的文件。我需要阅读特定大小的块。如果读取的大小小于特定的大小,我希望取消读取该文件(类似于ungetc所做的,而不是char[]),然后重试。附加到已读取的字节不是我的选项 这怎么可能 我尝试通过以下方式保存当前职位: FILE *fd = fopen("test.txt","r+"); fpos_t position; fgetpos (fd, &position); 然后读取文件并将指针放回其在fread之前的位置 numberOfBytes = frea
FILE *fd = fopen("test.txt","r+");
fpos_t position;
fgetpos (fd, &position);
然后读取文件并将指针放回其在fread之前的位置
numberOfBytes = fread(buff, sizeof(unsigned char), desiredSize, fd)
if (numberByBytes < desiredSize) {
fsetpos (fd, &position);
}
numberOfBytes=fread(buff,sizeof(无符号字符),desiredSize,fd)
if(numberBytes<所需大小){
fsetpos(fd和位置);
}
但它似乎不起作用。用我刚刚检查过的代码(Ubuntu 12.04 LTS,32位)替换我以前的建议。GCC是4.7,但我很确定这是100%的标准解决方案
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define desiredSize 10
#define desiredLimit 100
int main()
{
FILE *fd = fopen("test.txt","r+");
if (fd == NULL)
{
perror("open");
exit(1);
}
int total = 0;
unsigned char buff[desiredSize];
while (total < desiredLimit)
{
fpos_t position;
fgetpos (fd, &position);
int numberOfBytes = fread(buff, sizeof(unsigned char), desiredSize, fd);
printf("Read try: %d\n", numberOfBytes);
if (numberOfBytes < desiredSize)
{
fsetpos(fd, &position);
printf("Return\n");
sleep(10);
continue;
}
total += numberOfBytes;
printf("Total: %d\n", total);
}
return 0;
}
#包括
#包括
#包括
#定义所需尺寸10
#定义所需限制100
int main()
{
文件*fd=fopen(“test.txt”、“r+”);
如果(fd==NULL)
{
佩罗(“公开”);
出口(1);
}
int-total=0;
无符号字符buff[desiredSize];
while(总计<期望限值)
{
fpos_t位置;
fgetpos(fd和位置);
int numberOfBytes=fread(buff,sizeof(无符号字符),desiredSize,fd);
printf(“读取尝试:%d\n”,numberOfBytes);
if(numberOfBytes
我从另一个控制台向文件中添加文本,是的,读取按照我添加的内容进行了5个字符块的处理。
fseek
似乎非常适合:
FILE *fptr = fopen("test.txt","r+");
numberOfBytes = fread(buff, 1, desiredSize, fptr)
if (numberOfBytes < desiredSize) {
fseek(fptr, -numberOfBytes, SEEK_CUR);
}
FILE*fptr=fopen(“test.txt”、“r+”);
numberOfBytes=fread(buff,1,desiredSize,fptr)
if(numberOfBytes
还注意到文件描述符是