一、打开文件

打开文件使用库函数中的fopen函数。fopen函数会为要打开的文件新建一个流,然后返回一个指向file型对象的指针,该file型对象中保存了控制这个流所需要的信息。

fp=fopen("1.txt","r")

这里fp可以任意命名,fp不是流的实体,而是指向流的指针。接收两个参数,一个是文件名,另一个是打开文件的模式。

打开文件的mode模式有:

Mode

描述

r

以只读模式打开文件

w

以只写模式打开文件,若文件存在则文件长度清0

a

以追加模式(从文件末尾处开始的只写模式)打开或建立文本文件

rb

以只读模式打开二进制文件

wb

以只写模式打开二进制文件,若文件存在则文件长度清0

ab

以追加模式(从文件末尾处开始的只写模式)打开或建立二级制文件

r+

以读写模式打开文件

w+

以读写模式打开文件,若文件存在则文件长度清0

a+

以追加模式(文件末尾处开始写入的更新模式)打开或建立文本文件

r+b或rb+

以读写模式打开二进制文件

w+b或wb+

以读写模式建立二进制文件,若文件存在则文件长度清0

a+b或ab+

以追加模式(文件末尾处开始写入的更新模式)打开或建立二进制文件

以读取模式(mode以字符'r开头')打开文件时,如果该文件不存在或者没有读取权限,则文件打开失败。

对于追加模式(mode以字符'a'开头)打开的文件,打开后的写入操作都是从文件末尾处开始的。

对于以读写模式(mode的第2或第3个字符为'+')打开的文件相关联的流,可以进行输入和输出操作。但若要在输出操作之后进行输入操作,就必须在这两个操作之间调用文件定位函数(fseek、fsetpos或rewind)。

返回一个指向对象的指针,该对象用于控制打开的流。打开操作失败时,返回空指针。

二、关闭文件

当文件操作完毕后一定要关闭文件,目的是刷新stream流,将保存在缓存中的内容写入到文件中。

fclose(fp)

若成功的关闭流,则返回0,否则返回EOF。

完整的打开关闭文件例子:

c脚本 mysql C脚本函数_二进制文件

从键盘读入文件名,并打开:

c脚本 mysql C脚本函数_打开文件_02

三、文件数据汇总

要从文件中读取数据需要用fscanf函数。fscanf可以对任意流执行与scanf函数相同的输入操作,比scanf多一个参数。

fscanf(fp,"%d",&x)

函数将取到的数据保存在参数x中,若没有执行任何转换就发生了输入错误,则返回定义的EOF错误,否则返回成功赋值的输入项数。若在输入中发生匹配错误,则返回的输入项会少于转换说明符对应的实参个数,甚至为0。

c脚本 mysql C脚本函数_打开文件_03

练习:从指定文件读入数据,对其中的身高进行从高到低排序:

test.txt文件内容:

c脚本 mysql C脚本函数_c脚本 mysql_04

源代码:

c脚本 mysql C脚本函数_打开文件_05

四、向文件写入数据

printf函数是向标准输出流进行输出的函数,而向任意流执行同样操作就是fprintf函数。

fprintf(fp,"%d",x)

练习1:写入日期和时间

将当前日期和时间写入指定文件

c脚本 mysql C脚本函数_文本文件_06

练习2:从键盘读取名字、身高和体重信息,并写入文件

c脚本 mysql C脚本函数_c脚本 mysql_07

五、文件内容的显示与复制

将A文件的内容读取后写入到B文件中。fgetc()函数:读文件函数(由文件中读取一个字符)

练习1:复制A文件内容到B文件

c脚本 mysql C脚本函数_文本文件_08

练习2:显示文件内容

c脚本 mysql C脚本函数_打开文件_09

练习3:统计读入文件的文件行数

c脚本 mysql C脚本函数_文本文件_10

注:对最后一行处理时需要注意,最后一行如果为换行符则不需要操作,如果不为换行符则需要对count再加一行!

六、在二进制文件中保存实数

fwrite和fread函数分别用于二进制文件的写入与读取。

文件写入函数为:

fwrite(&pi,sizeof(double),1,fp)

文件读取函数为:

fread(&pi,sizeof(double),1,fp)