首页 文章
  • -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()从该位置读取一定量的字节 . 我在想这个是正确的吗?如果是这样,最好怎么做呢?即如何将两者结合在一起 . 如果我不对,你会建议我做什么呢? ...
  • 2 votes
     answers
     views

    C:从二进制文件中读取字节

    我目前正在尝试从二进制文件中读取256个字节,并且在运行程序时没有得到任何输出(或错误) . 我在这方面出错了,我有点困惑 . 试图将每个字节作为char读取并存储为长度为256的char数组 . 我已经在SO上查看了类似的问题,到目前为止还没有任何运气 . 我的代码的简化版本如下: #include <stdio.h> #include <stdlib.h> int m...
  • 0 votes
     answers
     views

    从文件中读取2个字节并转换为int会产生错误的输出

    基本上我有一个包含数字的文本文件 . 我将数字更改为0以启动,然后我从文件中读取2个字节(因为int是2个字节)并将其转换为int . 然后我打印结果,但它打印出奇怪的结果 . 因此,当我有0时,由于某种原因打印出2608 . 我要发一份文件说我需要通读一个文件,其中字节0到1的偏移代表一个数字 . 所以这就是我读字节而不是字符的原因...... 我想这个问题是由于读取字节而不是按字符读取,所以如...
  • 0 votes
     answers
     views

    早读EOF但只在写作时

    我写了一个程序来减少Windows上的.img文件 . (Win7 MS Visual studio 2010 express)它在阅读时给了我早期的EOF,但只有我写的!如果我不写,我可以阅读整个文件 . 我试过较小的缓冲区大小(4K,8K)我试过fflush无济于事 . 它总是在读取~606496K字节后停止 . 输入文件是7.6G我想要一个4.8G文件:cut_img test_in.im...
  • -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

    尽管非空文件,但是fread into buffer仍然是空白的

    我试图从65536字节文件中读取256字节到缓冲区,使用fopen,fread,fwrite和fseek将其视为随机访问文件 . 我没有收到任何错误,但读取后缓冲区仍为空,即使文件非空并且fread报告读取256个字节 . 这是我的代码: FILE *file = NULL; char buffer[255]; memset(buffer, 0, sizeof(buffer)); ...
  • 1 votes
     answers
     views

    读取大部分文件以进行散列/校验和

    如果我有三个获取参数: $filename = $_GET['filename']; $start = $_GET['start']; $size = $_GET['size']; 我正在阅读文件的一大块,如下所示: $handle = fopen($basepath . $filename, "rb"); fseek($handle, $start); $...
  • 1 votes
     answers
     views

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

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

    fread无法读取文件

    我这里有一个嵌套结构 . typedef struct { struct_one one; struct_two two; struct_three three; } outermost_struct; 将指针传递给函数中的外部结构 outermost_struct settings readFileInStruct(settings_file, &a...
  • -1 votes
     answers
     views

    在编写文件时如何“手动”表示EOF?

    我有这个功能: int cipher_file(char *file_path, uint8_t *key, int key_size){ FILE *file; size_t read_char_count, wrote_char_count; fpos_t *pos = malloc(sizeof(fpos_t)); char *block = malloc...
  • 1 votes
     answers
     views

    使用R data.table fread读取完全引用的.csv文件

    我正在尝试读取每个单元格中带引号的.csv文件,如下所示:"a","b""1","hello""2","hello, test" 使用read.csv()它可以正常使用整数类型的列“a” . 但是对于data.table :: fread(),列“a”的类型是字符 . x &lt...
  • 0 votes
     answers
     views

    调用fread()函数时文件指针如何移动? [重复]

    这个问题在这里已有答案: Why is “while ( !feof (file) )” always wrong? 5个答案 //Libraries are called accordingly struct std { int a; char b; }// a structure with 2 objects void main() { std h[5]; // struc...
  • 3 votes
     answers
     views

    从fread()失败中恢复的好方法是什么?

    如果对fread()的调用返回0并且ferror()指示错误(相对于EOF),是否可以重试读取或是否更好地关闭并重新打开文件? 我无法完全重新开始 - 输入文件已被部分处理,无法撤消(比如我一次写出一个块到套接字,并且由于现有协议,没有办法告诉远程端,“没关系,我需要重新开始”) . 我可以fclose()和fopen()文件,fseek()超过已经处理过的数据,并从那里继续fread() - 但...
  • 0 votes
     answers
     views

    PHP fread文件指针位置

    我想知道 fread 函数如何在文件中移动文件指针 . 让我们考虑以下场景: <?php $file=fopen(binary.txt,rb); fread($file,0x594); function(fread($file,0x1a8), ....); // some function w/ first argument as fread O/P ?> 代码简要概述: 它将以只读...
  • 1 votes
     answers
     views

    fseek后fread不工作

    我有一小段代码,它不断从.wav文件中读取2字节样本并将它们写入新文件,并且应该能够向后搜索以重复写入文件的各个部分 . 这是它的样子: while (readRemaining > 0) { while (sizeToRead > 0 && readRemaining > 0) { fread(&leftSample, 2, 1,...
  • 0 votes
     answers
     views

    使用fseek的mmap-like算法

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

    是否有使用fread()读取的字节数限制

    我正在尝试将文件中的数据读入缓冲区 . 文件中的数据为900K字节 . (寻求文件结束和ftell()) . 分配要读取大小为900K 1的数据的缓冲区(以空终止) . 我的问题是fread()返回900K,但是我看到strlen(缓冲区)显示的值较小,而在最后的缓冲区中我可以看到类似“.....(截断)”的内容 . 为什么会这样? fread()是否存在限制,超出该限制我们无法读入缓冲区并且会...
  • 3 votes
     answers
     views

    C:来自二进制文件的fread与原始模式不匹配后存储到缓冲区中的unsigned short

    我有一个二进制文件,在这个模式后面填充2字节字(在HEX中):0XY0 . 这是我执行fread和fopen的代码的一部分 . unsigned short buffer[bufferSize]; FILE *ptr; // ptr = fopen(fileIn,"rb"); // if(ptr == ...
  • 7 votes
     answers
     views

    fread如何知道文件何时在C中结束?

    所以我不完全确定如何使用fread . 我有一个little-endian的二进制文件,我需要转换为big-endian,我不知道如何读取文件 . 这是我到目前为止: FILE *in_file=fopen(filename, "rb"); char buffer[4]; while(in_file!=EOF){ fread(buffer, 4, 1, in_file)...
  • 0 votes
     answers
     views

    用C从二进制文件中逐位读取

    我需要为每一步读取256位,直到二进制文件结束 . 在c中是否有任何操作逐位读取?我使用fread函数并读取32个字符 . 对于所有字符,我一点一点地移位8次 . 读完后将这256位写入文件 . 写?有同样的事吗?我的意思是做ı写32个字符=> 32 * 8 = 256位 .
  • -1 votes
     answers
     views

    使用来自二进制(十六进制)文件的fread交换字节

    我有二进制文件(十六进制表示)与以下输入, 0000 1900 我正在使用以下代码将数据读入整数 . fp = fopen(argv[1], "rb"); if (fp == NULL){ printf("Error - Failed opening the file\n"); return EXIT_FAILURE...
  • 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_...
  • 0 votes
     answers
     views

    无法将缓冲区的内容复制到字符串中:从C中的.bin文件读取

    我有一个函数,从文件中读取一定数量的字节,并将这些字节放入一个字符串 . 使用fread我可以打印缓冲区中每个元素的内容,b,但如果我尝试打印整个字符串(b)没有打印出来 . 这是在for循环中的代码中完成的;我打印b [i]的内容 . 然后在for循环之后我尝试打印b,然后将b的内容放入我创建的结构中以供其他地方使用 . 有关为什么会发生这种情况的任何想法? void load_frame(st...
  • 2 votes
     answers
     views

    将字节写入文件然后读取相同的字节是不一样的

    基本上我有一个文件,在这个文件中我写了3个字节,然后我写了一个4字节的整数 . 在另一个应用程序中,我读取前3个字节,然后我读取接下来的4个字节并将它们转换为整数 . 当我打印出这个值时,我得到了非常不同的结果...... fwrite(&recordNum, 2, 1, file); //The first 2 bytes (recordNum is a short int) fw...
  • 0 votes
     answers
     views

    C中的fopen / fread / fgets是否是PID安全的?

    各种用户正在浏览100%用C(CGI)编程的网站 . 每个网页都使用fopen / fgets / fread从文件中读取常用数据(如导航栏) . 如果各种各样的人浏览同一页面,每次打电话给fopen / fgets / fread会互相干扰吗?如果是这样,如何在C中解决? (这是一个Linux服务器,编译是用gcc完成的,这是用C编程的CGI网站 . ) 例: FILE *DATAFILE = ...
  • 2 votes
     answers
     views

    fread无法从C中的二进制文件中读取结构的字符串值

    我想在下面的函数中返回一个指向链表头结构的指针,但由于我的fread无法读取struct的字符串,我必须对一些变量进行malloc并将newheader-> name字符串指向它 . 在以下函数中如果我释放我的临时变量然后返回新 Headers 只打印空值而如果我没有那么我得到内存泄漏但功能正常 . 我希望能够返回完整链表的头部而不是空值 . struct head *read_string...

热门问题