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等可读的字符而已
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)