c语言读取二进制数据文件

c语言读取二进制数据文件,第1张

步骤如下:

1、数据流:程序与数据间的交互是以流的形式进行。在C语言文件存取时,打开文件 *** 作,关闭数据流。

2、缓冲区:程序执行时,提供的额外内存以暂时存放数据。缓冲区作用是为了提高存取效率,内存的存取速度比磁盘快。

3、文件类型:分为文本文件和二进制文件两种。

补充:

1、文本文件:字符编码的方式进行保存。

2、二进制文件:内存中的数据原封不动至文件中,适用于非字符为主的数据。

C对二进制文件读写 *** 作,可以用fread函数和fwrite函数实现;

1.函数功能

用来读写一个数据块。

2.一般调用形式

fread(buffer,size,count,fp)

fwrite(buffer,size,count,fp)

3.说明

(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。

(2)size:要读写的字节数;

(3)count:要进行读写多少个size字节的数据项;

(4)fp:文件型指针。

注意:1 完成次写 *** (fwrite())作后必须关闭流(fclose())

2 完成一次读 *** 作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读 *** 作则接着上次的输出继续输出

3 fprintf() : 按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...])其用法和printf()相同,不过不是写到控制台,而是写到流罢了。

注意的是返回值为此次 *** 作写入到文件的字节数。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) str1:10字节;str2: 10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。

在windows系统下,C语言打开文件的"文本文件"方式和"二进制文件方式"的区别是:

在文本文件模式下:当给文件写入'\n'时,实际会写入'\r''\n',读文件时如果读到\r\n,会丢弃\r只保留\n, 除此以外,和二进制方式没有任何区别

举例:

FILE* fp

fp = fopen("123", "w")

fputc(10,fp) //10就是\n 但实际上会对文件写入\r\n,你用16进制编辑器打开123,会看到0D0A 两个字符

fclose(fp)

甚至这样:

fp = fopen("123", "w")

int n = 1116682 //这是16进制的0x110A0A

fwrite(&n, 4, 1, fp) //因为那数字字节里有0A,写入时会挤进去0D实际写入0D0A0D0A1100

fclose(fp)

而这样就只写入0A

fp = fopen("123", "wb")

fputc(10,fp) //只写入0A

至于你看到的"仍是文本文件",是因为你对文件写入的内容就是些文本而已

所有文件都是二进制的,文本文件只是文件的内容都是些ASCII或者unicode等可读的字符而已


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12100048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存