首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

来自二进制文件的fread(),然后printf string -不工作

问题描述:来自二进制文件的fread(),然后printf string -不工作。

回答: 这个问题描述了从二进制文件中使用fread()函数读取数据,然后使用printf()函数打印字符串时出现的问题。根据问题描述,可能存在以下几个可能的原因和解决方法:

  1. 数据格式不正确:由于从二进制文件中读取的数据是以二进制形式存储的,而printf()函数默认将数据以字符串形式输出。如果读取的数据不是以字符串形式存储,那么printf()函数可能无法正确解析并打印出来。解决方法是根据实际情况,将读取的数据转换为字符串形式,然后再使用printf()函数打印。
  2. 字符编码问题:如果读取的数据是以特定的字符编码方式存储的,而printf()函数使用的字符编码方式与之不匹配,那么可能导致乱码或无法正确显示。解决方法是确保读取和打印数据时使用相同的字符编码方式,或者进行字符编码的转换。
  3. 数据长度问题:如果读取的数据长度超过了字符串的长度限制,那么可能导致printf()函数无法正确解析并打印出来。解决方法是在读取数据之前,确定字符串的长度,并确保读取的数据不超过字符串的长度限制。
  4. 文件读取错误:如果fread()函数读取文件时发生错误,可能导致读取的数据为空或不完整,进而导致printf()函数无法正确打印字符串。解决方法是在使用fread()函数之后,检查返回值以确保文件读取成功,并处理可能的错误情况。

综上所述,针对这个问题,我们需要检查数据格式、字符编码、数据长度和文件读取等方面的问题,并根据具体情况进行相应的处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • C++里面的文件处理方法

    C++里面的文件处理方法 01 文件fopen函数和fprintf函数 今天在对一些待审核SQL进行语法解析时候,使用到了C++编程语言,从毕业开始,好久没有动过C++了,工作后一致沉迷在Python...a(append): 追加 t(text): 文本文件,可省略写 b(binary): 二进制文件 +: 读和写 2) 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。...在程序中可以用这一信息来判别是否完成打开文件工作,并作相应处理。...data.txt,然后写入this is a test这个测试字符串,将文件指针设置到文件头,然后读取文件里面的内容,这里再解释下fread和fwrite函数: fread()函数: fread是一个函数...该函数以二进制形式对文件进行操作,局限于文本文件

    87410

    文件操作

    当你关闭文件或者缓冲区已满时候才会写入到磁盘当中,例如进行文件关闭: 1fclose(fWrite); 文件类型 文本文件:例如.txt 、.c 、.cpp文件,人能够看懂 二进制文件:以二进制形式写入文件...,除了文本文件外,所有的数据都可以算是二进制文件 路径 绝对路径 右键任意文件,点击属性,在位置那一栏里面可以找到该文件绝对路径 ?..."); 13 exit(1); 14} 需要注意是: 文件打开方式 1"t":表示文本文件 rt 一般t可以省略写 2"b":表示二进制文件 rb 3"+":表示文件可读写...注意: 第一步是打开文件fopen,然后判断是否打开成功 读写操作要分别用两个文件指针 然后进行读写操作,同时对一个文件进行读写操作会出错,当写入操作完成之后再进行读取操作 EOF是宏定义#define...feof(fRead)) 7{ 8 fscanf(fRead, arr); 9 puts(arr); 10} 二进制读写文件 fread / fwrite 函数原型: 1size_t

    99940

    【C语言】文件操作

    ,其实说白了就是改变了信息来源方式,原先来自于键盘,现在可以来自文件 3.3.4 fread和fwrite fread,fwrite分别是二进制输入函数和二进制输出函数,他们适用范围只有文件流这一种流...,并不是文本内容,所以我们是看不懂,如果想看懂特德内容,可以用fread函数将文件信息以二进制形式读取出来方便我们查看 2.fread代码展示 typedef struct stu {...,也成功将字符串数组里面的内容拿出来,存放到我们想让他存在变量里面,其实就是将原来scanf和printf功能扩大了一个使用范围 四、文本文件二进制文件 根据数据组织形式,我们将数据文件分为文本文件二进制文件...%d\n", pos);//结果为2 rewind(pf);//我们这里让文件位置重新回到起始位置 pos = ftell(pf);//然后再用ftell返回当前文件指针偏移量大小 printf...,使用feof或ferror来确定是否发生了错误) (2)二进制文件读取结束判断,判断返回值是否小于实际要读个数 例如:fread判断返回值是否小于实际要读个数 (Fread返回实际读取完整项数

    3.8K10

    c语言基础学习10_文件操作02

    : 六、stat函数 七、fread 和 fwrite函数 八、fopena模式说明 九、fopenb模式说明 十、sftp传输文件说明 十一、fopen其他模式简要说明 十二、实现二进制文件拷贝...除了文本文件之外文件都是二进制文件,比如图像、视频、音乐、可执行程序这些都是二进制。 (其实文本文件也是二进制文件,文本文件是一种特殊二进制文件,文本文件里面都是ASCII码。)...功能:这两个函数以二进制形式对文件进行操作,局限于文本文件。...(原来EOF符不保留)   即:a作用是:如果文件不存在,那么a和w是一样;如果文件存在,那么覆盖这个文件,而是往文件后面追加内容。...文本写可以用:fputs和fprintf。 二进制文件读可以用:fread二进制文件写可以用:fwrite。 其实c语言所有的文件操作函数都是缓冲区函数。

    1.8K10

    文件操作

    比如数字4567按照文本文件方式存储 按照字符存储 那么4567占四个字节 二进制数据文件 二进制数据文件是把数据按其在内存中存储二进制形式以原样存放在磁盘文件中,特点是节省内存。...FILE* fp; 通过文件类型指针变量可以找到与之相关文件然后即可进行相关读/写等操作 文件打开和关闭 C语言在进行文件操作时,必须遵守打开--读写--关闭流程,不打开就不能读写文件,也必须在使用完成之后关闭文件...从指定文件中读出一个字符串到字符数组中去 n是正整数,表示从文件中读出字符串超过n-1,最后一个字符添加字符串结束标识读取过程中遇到换行符或者结束符号,则读取结束 写字符串函数 fputs(字符串...,文件指针)将一个字符串写入指定文件 这里字符串可以是字符串常量 字符串指针或者是字符数组 文件数据块读写函数 fread从指定文件读取规定大小数据块,存入指定内存缓冲区。...fwrite(p,size,n,fp); 函数fread和fwrite在调用成功时候,返回n值,即输入输出项数,调用失败返回0 #include #include

    17210

    【C 语言】文件操作 ( fread 函数 )

    七、读取文本文件 "\n" 与 读取二进制文件 "\r\n" 区别 二进制文件读写两个重要函数 , fread 和 fwrite , fread 用于读取文件 , fwrite 用于写出文件 ; fread...count); printf("Main End\n"); return 0; } 执行结果 : 六、读取完毕情况 ---- 如果文件已经读取完毕 , 不关闭文件 , 再次调用 fread...; 使用 ‘rb’ 方式打开文件 , 读取二进制文件 , 然后调用 fread 函数读取文件 , #include int main() { // 使用 "rb" 读取二进制方式打开文件...= a buffer[4] = 63 buffer[5] = 64 buffer[6] = d buffer[7] = a Main End 使用 ‘r’ 方式打开文件 , 读取文本文件 , 然后调用...fread 函数读取文件 , #include int main() { // 使用 "rb" 读取二进制方式打开文件 FILE *p = fopen("D:\\

    3.6K22

    C语言读写文件

    :要写入内容单字节数 //参数3:要写入size字节数据项个数 //参数4:目标文件指针 //返回值:返回实际写入数据块数目 //作用:向文件写入数据块,以二进制形式对文件进行操作,局限于文本文件...= NULL) { printf("%s", buf); } fclose(file); return 0; } 3、数据块读取:fread() //参数...\n"); return 0; } char buf[102400] = {0}; fread(buf, 1024, 100, file); printf...()与fwrite()结合使用 //以数据块格式读取,再以数据块格式写入到文件中,可以读取二进制文件,优点是读取二进制文件使用 示例: #include #include <string.h...,遇到空格或换行就结束,再将读取文件写入到文件中,优点是可以指定写入文件格式 示例: #include #include int main() {

    3.3K30

    【C语言】文件相关操作

    fgets 所有输入流 文本行输出函数 fputs 所有输入流 格式化输入函数 fscanf 所有输入流 格式化输出函数 fprintf 所有输入流 二进制输入 fread 文件 二进制输出 fwrite...函数参数 char *fgets( char *string, int n, FILE *stream ); # string 数据存储位置 # n 要读取最大字符数 # stream 对应文件指针...# char* 函数返回值,读取成功返回字符串首字符地址,失败或者遇到文件末尾返回NULL int fputs( const char *string, FILE *stream ); # string...); //关闭文件 fclose(pf); pf = NULL; return 0; } 6、fwrite 与 fread 函数功能 fwrite:以二进制形式向文件中写入数据;fread...;而如果我们设置文件缓冲区,频繁打断操作系统,让它来为我们写入、读取数据,则势必会降低操作系统工作效率;所以设立文件缓冲区是为了提高操作系统工作效率; 既然只有将文件缓冲区填满后才会进行写入

    2.9K00

    江哥带你玩转C语言 | 17-文件操作

    .c文件就是以文本文件形式存放 二进制文件 以补码格式存放。二进制文件是把数据以二进制格式存放在文件,其占用存储空间较少。...> int main() { /* * 以文本形式存储 * 会将每个字符先转换为对应ASCII, * 然后再将ASCII码二进制存储到计算机中 */...unix/linux 区分文本和二进制文件 ---- fclose函数 函数声明 int fclose ( FILE * stream ); 所在文件 stdio.h 函数功能 fclose()用来关闭先前...1, fr) > 0){ printf("%c\n", buf[0]); } fclose(fr); return 0; } 注意: fwrite和fread本质是用来操作二进制...结构体中数据类型统一,此时最适合用二进制方式进行读写 读写单个结构体 #include typedef struct{ char *name; int age

    1K00

    【C 语言】文件操作 ( fwrite 函数 )

    , fread 和 fwrite , fread 用于读取文件 , fwrite 用于写出文件 ; fread / fwrite 函数 既可以操作 二进制文件 , 又可以操作 文本文件 ; getc..., sizeof(char), 5, p); // 打印写出内容和写出 基本单元 个数 printf("fread : buffer = %s , write count = %u...; Hello 输出文件大小 : 右键查看该文件属性 , 大小 5 字节 ; 二进制文件分析 : 使用二进制文件查看工具打开该文件 , 发现该文件中只有 5 个字符 ; 三、fwrite..., sizeof(char), 20, p); // 打印写出内容和写出 基本单元 个数 printf("fread : buffer = %s , write count = %..., 后面几个乱码复制上 ; Hello 输出文件大小 : 右键查看该文件属性 , 大小 20 字节 ; 二进制文件分析 : 使用二进制文件查看工具打开该文件 ,

    4.9K11

    揭秘C语言文件操作:文件读写、最佳实践、权限管理和安全策略

    )在C语言中,可以使用fread函数按字节读取二进制文件,使用fread函数按数据类型读取二进制文件。...fread函数用于按字节读取二进制文件。...然后使用fread函数按数据类型读取二进制文件,将读取数据存储到相应变量中。通过这种方式,可以按需求从二进制文件中读取数据。...readImage函数用于从二进制文件中读取图像数据,它打开文件进行读取,然后按照图像大小分配内存,最后使用fread函数将图像数据读取到内存中。你可以在注释TODO部分对图像数据进行处理或使用。...这种方式适用于需要按指定格式解析和生成文件内容情况。二进制读写:使用fread和fwrite等函数以二进制方式读取和写入文件。这种方式适用于需要直接读取和写入二进制数据情况,如图片、视频等文件

    25910

    C-fopen,fwrite,fread,fseek笔记

    r+    以读/写方式打开文件,该文件必须存在。 rb+  以读/写方式打开一个二进制文件,只允许读/写数据。 rt+  以读/写方式打开一个文本文件,允许读和写。...若文件不存在,则会建立该文件,如果文件存在,则写入数据会被加到文件尾后,即文件原先内容会被保留(原来 EOF 符不保留)。 wb   以只写方式打开或新建一个二进制文件,只允许写数据。...ab+ 以读/写方式打开一个二进制文件,允许读或在文件末追加数据。...size, size_t nmemb,FILE *stream); 返回值 fread()和fwrite()返回是成功读取/写入条目数(也就是nmemb大小),如果到达文件末尾或读写错误,则返回0...fread(&readEnd,sizeof(int),1,fp); printf("read file end =%d\n",readEnd);

    2.5K20

    流动代码:文件流畅读写艺术(三)

    使用场景:sscanf 特别适用于从已经存在字符串中提取数据,例如解析来自文件、网络或用户输入数据。...之后,可以使用 printf 打印这个字符串,或者以其他方式使用它。 文件随机读写 顺序读写数据是按照顺序一个接一个地读取或写入,通常从文件开始位置开始,然后逐步向后移动,直到文件结束。...它功能类似于使用 fseek 函数来将文件指针移动到文件开头,但 rewind 返回值,因此不能用来检测错误。...判断方式 文本文件读取是否结束,判断返回值是否为EOF( fgetc),或者NULL(fgets) 二进制文本读取结束判断,判断返回值是否小于实际要读个数,例如 fread判断返回值是否小于实际要求个数...file"); return 1; } // 使用fread读取二进制数 size_t itemsRead = fread(&number, sizeof(int

    10510

    C语言文件操作

    文件不存在,则会创建该文件,如果文件存在,则写入数据会被加到文件尾后,即文件原先内容会被保留(EOF符不保留)。 wb:以只写方式打开或新建一一个二进制文件,只允许写数据。...ab+:以读写方式打开- -个二进制文件,允许读或在文件末追加数据。 文件关闭函数fclose(fp),其中fp为文件指针。...具体方法可以访问:点击访问 fread二进制形式读取文件数据 格式为:fread(s,n,m,fp) s为字符串指针(数组名),n为一次读取多少字符,m为读取多少次,fp为文件指针。...原型为:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) fwrite 以二进制形式写数据到文件中去 格式为:fwrite...,fp);//将fp文件指针所指字符串读出100位赋值给s指针 printf("%s",s); fclose(fp); printf("\nfputs_fgets

    2.7K20
    领券