C语言文件处理基础整理

一、文件的打开和关闭


1、基础知识


1、文件名包括文件路径,文件名主干和文件后缀
2、文件包括数据文件和程序文件,数据文件又分为ASCII文件和二进制文件。在外存中,ASCII文件是以ASCII码的形式存放的,因此又叫做文本文件。二进制文件是以二进制形式存储的,又被称为映像文件。而当这两种文件被调入到内存时,ASCII需要转换成二进制文件,而二进制文件可以直接进入内存。但ASCII对字符的处理较为方便。
3、C中定义了文件类型的结构体,所以可以直接定义FILE类型变量,如
    FILE f1;
一般情况下,习惯直接定义一个指向FILE类型变量的结构体变量,然后通过它来引用这些FILE类型的变量,这样使用比较方便,如
    FILE *f1;


2、文件的打开和关闭


1、用fopen函数打开数据文件


调用方式为 fopen(文件名,使用文件方式),例如:
    fopen("a","r");
表示要打开一个名字为“a1”的文件,使用文件的方法为“读入”(r代表read,即读入)。fopen函数返回值是指向a1的指针(a1文件信息区的起始地址)。通常将fopen的函数的返回值赋给一个指向文件的指针变量。如:
    FILE *fp;                    //定义了一个指向文件的指针变量fp
    fp=fopen("a1","r");          //将fopen函数的返回值赋给指针变量fp
使用文件方式:
文件使用方式 含义
“r”(只读) 为了输入数据,打开了一个已存在的文本文件

“w”(只写)

为了输出数据,打开了一个文本文件
“a”(追加) 向文本文件的末尾添加数据
“rb”(只读) 为了输入数据,打开了一个已存在的二进制文件
“wb”(只写) 为了输出数据,打开了一个二进制文件
“ab”(追加) 向二进制文件的末尾添加数据
“r+”(读写) 为了读写,打开了一个已存在的文本文件
“w+”(读写) 为了读写,建立了一个新的文本文件
”a+“(读写) 为了读写,打开了一个文本文件
”rb+“(读写) 为了读写,打开了一个二进制文件
”wb+“(读写) 为了读写,建立了一个新的二进制文件
”ab+“(读写) 为了读写,打开了一个二进制文件                    
2、注意
用“r”方式打开的文件,只能够读出数据,而不可以写入数据,这是就要保证,文件一定存在,否则就会报错。
用“w”方式打开的文件,只可以写入数据,当文件不存在时,会建立一个以指定名字命名的文件。如果存在该文件,则会在打开文件前先该文件删去,然后重新建立一个新的文件。
用“a”方式打开的文件,会在文件末尾添加新的数据而不会删除原有数据,但应该保证该文件已经存在,否则会出错。在打开文件是,文件读写标记会移到文件末尾。
如果不能实现“打开”任务,fopen函数会返回一个错误信息,即空指针值 NULL。
常用以下方法打开一个文件:
    if((fp=fopen("file","r"))==NULL){
        printf("cannot open this file\n");
        exit(0);                            //关闭所有文件,中止正在进行的程序。
    }


3、用fclose函数关闭数据文件

在使用完文件之后,为了避免对文件进行误操作,应该先关闭它,使文件指针变量不再指向该文件。
关闭文件用fclose函数,一般的调用形式为
fclose(文件指针);如:

    fclose(fp);

3、文件的读写

1、读写字符
函数名 调用形式 功能 返回值
fgetc fgetc(fp) 从fp指向的文件读入一个字符 读成功,带回所读的字符
失败则返回文件结束标志EOF(-1)
fputc fputc(ch,fp) 把字符ch写到文件指针变量fp所指向的文件中

输出成功,返回值就是输出的字符

输出失败,则返回EOF(即-1)

2、读写字符串
函数名 调用形式 功能 返回值
fgets fgets(str,n,fp) 从fp指向的文件读入一个长度为(n-1)的字符串,存放到字符数组str中

读成功,返回地址str

失败则返回NULL

fputs fputs(str,fp)

把str所指向的字符串写到文件指针变量fp所指向的文件中

输出成功,返回0

否则返回非0值

3、用格式化的方式 读写文件
格式化输入输出时,用的是fprintf函数和fscanf函数,它们的一般调用形式为:
    fprintf(文件指针,格式字符串,输出表列);
    fscanf(文件指针,格式字符串,输入表列);
例如:
    fprintf(fp,"%d.%6.2f",i,f);
它的作用是将int型变量和float型变量f的值按%d和%6.2f的格式输出到fp所指向的文件中若i=3,f=4.5,则输出到磁盘文件上的是以下的字符:
3,   4.50
4、用二进制方式向文件读写一组数据
常用fread和fwrite函数向文件读写一组数据块,它们的一般调用形式为:
    fread(buffer,size,count,fp);
    fwrite(butter,size,count,fp);

其中:

 
  

    buffer:是一个地址。对fread来说,它是用来存放从文件读入的数据的存储区的地址。对fwrite来说,是要把此地址的存储区中的数据向文件输出(以上指的是起始地址)。

    size:要读写的字节数。

    count:要读写多少个数据项(每个数据项的长度为size)。

    fp:FILE类型的指针。

在打开文件时制定用二进制文件,这样就可以用fread和fwrite函数读写任何类型的信息,例如:

    fread(f,4,10,fp);

其中f是一个float型数组名(代表数组首元素的地址)。这个函数从fp所指向的文件读入10个4个字节的数据,存储到数组f中。


第一次发博客,欢迎大家批评指正。

你可能感兴趣的:(C语言文件处理基础整理)