首页 文章
  • -1 votes
     answers
     views

    为什么fread()给出看似随机的数据?

    我有以下C代码以 rb+ 模式打开文件,然后写入100字节的值 0 . 当我读取偏移量为0以外的文件时,我得到96.这是为什么? FILE *fp = fopen("myfile", "rb+"); rewind(fp); char zero = 0; fwrite(&zero, 1, 100, fp); char result; fseek(fp...
  • 6 votes
     answers
     views

    转到C中的二进制文件的某个点(使用fseek),然后从该位置读取(使用fread)

    我想知道这是否是解决问题的最佳方法 . 我知道二进制文件的特定偏移的值,其中我想要的信息被保留...我想要做的是跳转到偏移然后从该位置开始读取一定量的字节 . 在使用谷歌之后,我得出结论,我最好的选择是使用fseek()移动到偏移的位置,然后使用fread()从该位置读取一定量的字节 . 我在想这个是正确的吗?如果是这样,最好怎么做呢?即如何将两者结合在一起 . 如果我不对,你会建议我做什么呢? ...
  • 1 votes
     answers
     views

    fseek char linux设备

    我正在尝试为linux编写一个简单的char设备,我需要通过fread / fwrite读取和编写设备并使用fopen和fseek . 我写了一个简单的测试程序来使用我的设备,我注意到fseek函数中的fpos不起作用,并且在fseek出现之后就不知道了 . 我无法使设备正常工作,因为在r模式下打开时fseek没有获得正确的文件位置,如果我使用在w模式下打开的文件,则除了fread之外一切正常 ....
  • 0 votes
     answers
     views

    fseek在二进制文件中失败

    edit 发现我的问题 . 我没有意识到fseek的origin参数的唯一允许值是SEEK_SET SEEK_CUR和SEEK_END,所以我把我的调用改为fseek(diskPointer,startOfData,SEEK_SET); 我有一个文件打开以读取和写入二进制模式,所以我在文件上使用fseek,fread和fwrite . 在整个代码中调用fwrite之前,我使用fseek将文件指针设...
  • -1 votes
     answers
     views

    如何在C中使用'fread'从文件中读取和获取分离的数据?

    我've written in a file (using ' fwrite() ')以下内容: TUS�ABQ���������������(A����������(A��B������(A��B���A��(A��B���A������B���A������0����A������0�ABQ�������0�ABQ�����LAS����������������A�����������A��...
  • 0 votes
     answers
     views

    fseek性能下降超过NFS

    我是一位分析电生理学数据的Matlab用户 . 最近我发现如果相对偏移(从当前位置到新位置的字节距离)大于10 ^ 5或10 ^ 6,则NFS共享文件的fseek会很慢 . 我用C检查了这个,似乎fseek很慢,而lseek则没有 . 有没有什么好方法可以提高NFS的fseek速度?将文件复制到本地驱动器不是一种选择,因为我正在处理实时数据 . 当相对偏移量小于此值时,fseek速度约为10 ^ ...
  • 0 votes
     answers
     views

    使用fseek的mmap-like算法

    所以我的想法是能够在任何偏移处读取文件的小部分,就像它是内存映射一样,但是使用fseek / fread . 大多数情况下它是顺序的,但需要能够从任意偏移量读入文件 . 它还需要一个64KB的小缓冲区来读取和填充一旦当前读取偏移量接近结束(可能来自使用类似双缓冲的其他线程),这也可以在可能的情况下智能地偏移回来,而不仅仅是天真的fseek恐惧 . 是否存在处理此问题的现有库/算法,或者是我必须自己...
  • 0 votes
     answers
     views

    FSEEK偏移接受超过它应接受的范围

    继Specification:之后 对于文本流,偏移量应为零,或者offset应为先前成功调用与同一文件关联的流上的ftell函数返回的值,并且应为SEEK_SET . 我知道 offset 必须是 ftell 函数的retun值,或者0, whence 必须是 SEET_SET (或0) . 但我使用了一些整数作为偏移和不同的 SEEK_... 它似乎运作良好 . 例如,这些工作: fsee...
  • 0 votes
     answers
     views

    无法使用fseek(C)浏览文件

    我正在尝试浏览文件,直到找到两行,其中第一行的前4位与下一行的前4位不同 . 为此,我一直在使用fseek来浏览它直到找到我想要的序列 . 这是一个十年来的人口清单,每十年都有不止一条线,但它们都是从最古老到最新的一年 . 我在main中使用ftell获取第一个偏移量,以便我可以在文件中间开始读取 . 这里的问题是,即使偏移是正的并且它应该向前,它仍然会向后移动 . 应该让它向前发展的路线是这样的...
  • 1 votes
     answers
     views

    调用read()返回0但缓冲区已更改,调用fread()读取相同的偏移量时没有发生

    如果我通过调用read()读取文件,如下所示: unsigned char buf[512]; memset(buf, 0, sizeof(unsigned char) * 512); int fd; int readcount; int offset = 10315001; /* file size is 14315504 */ fd = open("myfile", O_...
  • 1 votes
     answers
     views

    非常大的fseek前锋相当于stdin?

    我在stdin上有一个非常大的,已知的字节数,并希望在读取感兴趣的部分之前丢弃一个大的(也是已知的)数字(换句话说,我想通过一个大整数向前推进,但是fseek isn没有为管道定义 . 实现这一目标的最简单方法似乎是对fgetc的大量调用,第一种方法是使用单个调用fread,并使用分配的大型临时指针来存储结果 . 第一个非常慢,第二个使用可能无限量的内存,没有充分的理由 . 制作多个较小的读取可以...

热门问题