C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在C中未读取文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试读取同时写入磁盘的文件.我需要阅读特定大小的块.如果读取的大小小于特定大小,我想要读取文件(类似于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);
}

但它似乎没有奏效.

解决方法

用我刚检查过的代码替换我以前的建议(Ubuntu 12.04 LTS,32bit).海湾合作委员会是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 @R_111_10586@l = 0;
    unsigned char buff[desiredSize];

    while (@R_111_10586@l < desiredLimit)
    {
        fpos_t  position;
        fgetpos (fd,&position);

        int numberOfBytes = fread(buff,fd);
        printf("Read try: %d\n",numberOfBytes);
        if (numberOfBytes < desiredSizE)
        {
            fsetpos(fd,&position);
            printf("Return\n");
            sleep(10);
            conTinue;
        }
        @R_111_10586@l += numberOfBytes;
        printf("@R_111_10586@l: %d\n",@R_111_10586@l);
    }
    return 0;
}

我正在从另一个控制台添加文本到文件,是的,根据我添加内容,读取正在进行5个字符块.

大佬总结

以上是大佬教程为你收集整理的在C中未读取文件全部内容,希望文章能够帮你解决在C中未读取文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。