C语言中对文件的输入输出

1.打开关闭文件

1.1用fopen函数打开数据文件

fopen函数的调用方法为:

fopen(文件名,使用文件方法);

//列如:
​
fopen("al","r");

使用文件方法如下:

文件使用方法含义如果指定的文件不存在
“r”(只读)为了输入数据,打开一个已存在的文本文件出错
“w”(只写)为了输出数据,打开一个文本文件建立新文件
“a”(追加)向文本文件尾添加数据出错
“rb”(只读)为了输入数据,打开一个二进制文件出错
“wb”(只写)为了输入数据,打开一个二进制文件建立新文件
“ab”(追加)向一个二进制文件尾添加数据出错
“r+”(只读)为了读和写,打开一个文本文件出错
“w+”(只写)为了读和写,建立一个新的文本文件建立新文件
“a+”(追加)为了读和写,打开一个文本文件出错
“rb+”(只读)为了读和写,打开一个二进制文件出错
“wb+”(只写)为了读和写,建立一个新二进制文件建立新文件
“ab+”(追加)为了读写打开一个二进制文件出错

1.2用fclose函数关闭数据文件

关闭文件用fclose函数。fclose函数调用的一般形式为

fclose(文件指针);

//列如:
​
fclose(fp);

2.顺序读写数据文件

2.1怎样向文本读写字符

对文本文件读入或输出一个字符的函数

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

2.2怎么向文件读写一个字符串

读写一个字符串的函数

函数名调用形式功能返回值
fgetsfgets(str,n,fp)从fp指向的文件读入一个长度为(n一1)的字符串,存放到字符数组str中。读成功,返回地址str,失败则返回NULL
fputsfputs(str,fp)把str所指向的字符串写到文件指针变量fp所指向的文件中输出成功,返回0;否则返回非0值

说明: (1) fgets函数的函数原型为 char * fgets (char * str,int n,FILE * fp); 其作用是从文件读入一个字符串。调用时可以写成

fgets(str,n,fp);

(2)fputs函数的函数原型为 ​ int fputs (char * str,FILE* fp); 其作用是将str所指向的字符串输出到fp所指向的文件中。调用时可以写成

//例如:
fputs("China", fp);

fgets和 fgets这两个函数的功能类似于gets和 puts函数﹐只是gets和 puts以终端为读写对象,而fgets 和fputs函数以指定的文件作为读写对象。

2.3用格式化的方式读写文件

前面进行的是字符的输人输出,而实际上数据的类型是丰富的。大家已很熟悉用printf函数和scanf函数向终端进行格式化的输人输出,即用各种不同的格式以终端为对象输人输出数据。其实也可以对文件进行格式化输入输出,这时就要用fprintf函数和fscanf函数,从函数名可以看到,它们只是在printf和 scanf 的前面加了一个字母“f”。它们的作用与printf函数和scanf函数相仿,都是格式化读写函数。只有一点不同:fprintf和 fscanf 函数的读写对象不是终端而是文件。它们的一般调用方式为 ​                 ​​​​​​​fprintf(文件指针,格式字符串,输出表列);

        fscanf(文件指针,格式字符串,输入表列);

//例如:
fprintf (fp,"%d,%6.2f”,i,f);

2.4用二进制方式向文件读写一组数据

它们的一般调用形式为

fread(buffer,size,count,fp);

fwrite( buffer ,size,count,fp);

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

size:要读写的字节数。

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

fp: FILE类型指针。

在打开文件时指定用二进制文件,这样就可以用fread和fwrite函数读写任何类型的信息﹐例如: ​ fread(f,4,10,fp);

3.随机读写数据文件

3.1文件位置标记的定位

(1)用rewind函数使文件位置标记指向文件开头

rewind函数的作用是使文件位置标记重新返回文件的开头,此函数没有返回值。

//列如
rewind(fp);

(2)用fseek 函数改变文件位置标记

fseek 函数的调用形式为

        fseek(文件类型指针,位移量,起始点)

//列如
fseek(fp,100L,0);

4.文件读写的出错检测

1.ferror函数

一般形式: ferror(fp);

如果ferror返回值为O(假),表示未出错;如果返回一个非零值,表示出错。

2.clearerr函数

clearerr的作用是使文件错误标志和文件结束标志置为0。假设在调用一个输入输出函数时出现错误, ferror函数值为一个非零值。应该立即调用clearerr(fp),使ferror(fp)的值变成0,以便再进行下一次的检测。

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾月拾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值