二进制文件和文本文件的读写

  数据怎么在磁盘上写不是由文件打开方式决定的,而是由写函数决定的。数据怎么从磁盘上读也不是由文件打开方式决定的,而是由读函数决定的。
上面说的数据怎么写是指,一种类型的变量是怎么存的?比如int 12,可以直接存12的二进制码(4个字节),也可以存字符1,字符2.
数据怎么读的是指,我要读一个int变量,是直接读sizeof(int)个字节,还是一个字符一个字符的读,直到读到的字符不是数字字符。

C里面有两组文件读写函数恰好支持上面两种方式的读写:
1.二进制方式

fread(buffer,size,count,fp)
fwrite(buffer,size,count,fp)。//用来读写一个数据块。它对应的是第一种存储方式。直接按类型的字节长度指定读写的字节数。

 

2.文本方式
fprintf函数和fscanf函数.它对应的是第二种读写方式。即以字符的方式读写。
fprintf函数、fscanf函数与printf函数、scanf函数的作用相仿,都是格式化读写函数。fprintf和fscanf函数的读写对象是磁盘文件,而printf和scanf函数的读写对象是终端。)
它们的一般调用格式为:

fprintf(文件指针,格式字符串,输出列表);//写函数
fscanf (文件指针,格式字符串,输入列表);//读函数

 

#include <stdio.h>

void main(){

    FILE *fp;
    char s[]= "This is a string.",s1[30];
    char c = '\n';

    fp = fopen("file.txt","a");
    fprintf(fp,"%s%c",s,c);

    fclose(fp);
    fp=fopen("file.txt","r");
    fscanf(fp, "%[^\n]\n", s1);
    printf("%s\n",s1);
    fclose(fp);

}

 


补充:文件结束符
文本文件适用:
EOF:通过#define EOF (-1) ,判断文件指针指向的值是否为EOF来判断是否结束
二进制适用:
feof(FILE *p):避免了二进制中需要的文件中出现-1二被EOF误判为结束符,出现的一种操作,遇到结束返回1,否则返回0.

posted @ 2016-10-26 14:24  风雨缠舟  阅读(4109)  评论(0编辑  收藏  举报