文件操作-----------C语言

文件的打开

ANSI C规定了标准/输出函数库,用fopen函数来实现打开文件。fopen函数的原型定义在头文件stdio.h中。

FILE fp; fp = fopen(filename, mode);
fopen函数有两个参数:
filename:一个指向字符的指针
mode:系统规定的字符串,表示文件的操作属性

mode 字符串对应的操作模式

读写方式文件类型含义读写方式文件类型含义
“r”文本文件打开文本,只读“rb+”二进制文件打开二进制文件,读、覆盖写
“w”文本文件建立文本,只写“wb+”二进制文件打开二进制文件,先写后读
“a”文本文件打开文本,追加“ab+”二进制文件打开二进制文件,读追加
“rb”二进制文件打开二进制文件,只读“rt”文本文件打开文本文件,只读
“wb”二进制文件建立二进制文件,只写“wt”文本文件打开文本文件,只写
“ab”二进制文件打开二进制文件,读、追加“at”文本文件打开文本文件,追加
““r+””文本文件打开文本文件,读、覆盖写“rt+”文本文件打开文本文件,读、覆盖写
““w+””文本文件打开文本文件,先写后读“wt+”文本文件打开文本文件,先写后读
““a+””文本文件打开文本文件,读、追加“at+”文本文件打开文本文件,读、追加

三个基本模式:

“r”(read)模式总是打开一个已经存在的文件,如果文件不存在则出错。

“w”(write)模式建立一个新文件,如果文件已经存在,那么先删除存在的文件,再建立新文件。

“a”(append)打开一个存在的文件,在文件的尾部追加数据。


三个追加符:

“b”(binary)表示二进制文件。

“t”(或默认)表示文本文件。

“+”表示将模式扩展为可读、可写方式。

注:再打开文件时要加入判断,判断是否打开成功。

FILE *fp;
if((fp=fopen(filename,mode))==NULL)
{
    printf("打开文件错误!\n");
    exit(1);/*由exit函数终止程序运行。*/
}

文件的关闭

文件打开的目的是为了读/写,当文件使用完毕后,应当关闭文件。关闭文件的三个目的:
1.保证文件的数据不丢失,将缓冲区中的数据回写文件。
2.释放缓冲区。
3.切断文件指针与文件的关联,使关闭后的文件指针可以用于打开其他文件。
C语言定义了关闭文件的标准函数fclose。函数原型定义在头文件stdio.h中,其一般形式为:fclose(文件指针);
例如:fclose(fp);//fp是文件指针。

文件的读/写

字符输入及输出

字符输出函数fputc()

用法:fputc(ch,fp);
ch:输出的字符;fp:文件指针变量
功能:写一个字符到fp对应文件的当前位置上。如果调用函数成功,则返回ch的值;如果失败,则返回值EOF(系统定义的宏,值为-1);


字符输入函数fgetc()

用法:ch=fgetc(fp);
fp:文件指针变量
功能:从fp对应的当前位置读一个字符。如果调用成功,则返回读到的字符(赋值给ch);如果读到文件结束,则返回EOF(-1)。


文件结束检测函数feof()

用法:feof(fp);
fp:文件指针变量
功能:判断文件是否处于文件结束位置。如果文件结束,则返回1,否则返回0。


字符串输入函数fgets()

用法:fgets(str,n,fp);
str:字符指针或数组名;n:整型量,说明输入字符串的最大长度(包括‘\0’);fp:文件指针
功能:从fp对应文件的当前位置,最多输入n-1个字符,在最后加‘\0’,之后放在str为首地址的内存中。
注意:在输入过程中,如果遇到换行符或EOF,输入即结束。函数正常调用,返回str的首地址,当出错或遇到文件结束标志时,返回NULL。

例如:

FILE *fp;
cahr str[10];
fp = fopen("class.txt", "rt");
gets(str);
while (fgets(str, 10, fp) != NULL) {
printf("%s", str);
}
//其意义是从fp所指的文件中读取10个字符送入字符数组str中,若文件读不到数据则返回NULL,结束循环。

字符串输出函数fputs()

用法:fputs(str,fp);
str:函数参数str是字符指针或数组名;fp:文件指针
功能:将首地址是str的字符串输出到fp对应文件的当前位置,自动丢弃str后的‘\0’。函数调用成功后返回值是0,否则是EOF。
在文件使用中,可采用标准的设备文件,系统为每一个设备指定了标准的文件指针名称。

例如:

FILE *fp;
cahr str[10];
fp = fopen("class.txt", "rt");
gets(str);
fputs(str, fp);
//其意义是将字符串str中的内容写入文件指针所指的文件。

文件的格式化输入/输出函数

格式化输入函数fscanf()

用法:fscanf(fp,“格式化字符串”,输入项地址表);
fp:文件指针;format:格式说明字符串;&arg1…&argn:输入变量的地址列表。
功能:从fp指向的文件的当前位置,顺序读取ASCII码值,按照fomat规定的格式转化为各个变量对应的值,送入指定变量。

例如:

char num[20], name[40], sex[5];
FILE *fp;
fp = fopen("class1.txt", "r");
fscanf("%s %s %s", num, name, sex);

格式化输出函数fprintf()

用法:fprintf(fp,“格式化字符串”,输出项地址表);
fp:文件指针;format:格式说明字符串;arg1…argn:输出参数个数表
功能:按指定的格式(format)将输出列表arg1…argn的值转换成对应的ASCII码表示形式,写入fp文件的当前位置。

例如:

char num[20] = "0123456", name[40] = "z张三", sex[5] = "男";
FILE *fp;
fp = fopen("class1.txt", "r");
fputc('\n', fp);
fprintf(fp, "%s %s %s", num, name, sex);

注:

fprintf()是将内容输出到文件中,而printf()是将内容输出到屏幕上。
fscanf()是将内容从文件中读取出来,而scanf()是将内容从屏幕上读取

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值