C语言学习笔记——文件

1.fopen函数

调用形式为:

fopen( filename, mode );
filename 为文件名,包括文件路径; mode 为打开方式。fopen 会获取文件信息,并保存到一个FILE类型的结构体变量中,然后将变量的地址返回,所以需要一个FILE类型的指针来接收 fopen 的返回值:
FILE *fp = fopen( filename, mode);

2.打开方式

打开方式说明
r以只读方式打开文件,只允许读取,不允许写入。该文件必须存在。
r+以读/写方式打开文件,允许读取和写入。该文件必须存在。
rb+以读/写方式打开一个二进制文件,允许读/写数据。
rt+以读/写方式打开一个文本文件,允许读和写。
w以只写方式打开文件,若文件存在则长度清为0,即该文件内容消失,若不存在则创建该文件。
w+以读/写方式打开文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a以追加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留(EOF符保留)。
a+以追加方式打开可读/写的文件。若文件不存在,则会建立该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(原来的 EOF符 不保留)。
wb以只写方式打开或新建一个二进制文件,只允许写数据。
wb+以读/写方式打开或建立一个二进制文件,允许读和写。
wt+以读/写方式打开或建立一个文本文件,允许读写。
at+以读/写方式打开一个文本文件,允许读或在文本末追加数据。
ab+以读/写方式打开一个二进制文件,允许读或在文件末追加数据。

3.字符读取函数 fgetc

调用的形式为:
字符变量 = fgetc(文件指针);
例如:
char ch;
FILE *fp = fopen("D:\\demo.txt", "r+");
ch = fgetc(fp);

4.字符写入函数fputc

调用的形式为:
fputc( 字符, 文件指针 );
例如:
fputc('a', fp);
或者:
char ch = 'a';
fputc(ch, fp);

5.读字符串函数fgets

fgets 函数的功能是从指定的文件中读一个字符串到字符数组中,调用的形式为:
fgets(字符数组名, n, 文件指针);
对fgets函数有两点说明:
  • 在读出 n-1 个字符之前,如遇到了换行符或EOF,则读取结束。
  • fgets 函数也有返回值,其返回值是字符数组的首地址。

6.写字符串函数fputs

fputs 函数的功能是向指定的文件写入一个字符串,调用形式为:
fputs(字符串, 文件指针);

7.数据块读写

读数据块函数 fread 的调用形式为:
fread(buffer, size, count, fp);
写数据块函数 fwrite 的调用形式为:
fwrite(buffer, size, count, fp);
将文件指针移动到文件开头:
rewind(fp);
其中:
  • buffer 表示缓冲区,是一个指针,可以是数组、变量、结构体等。在 fread 函数中 buffer 用来存放读取到的数据,在 fwrite 中用来存放要写入的数据。
  • size:表示数据块的字节数。
  • count:表示要读写的数据块的块数。
  • fp:表示文件指针。

8.格式化输入输出

fscanf(文件指针, 格式字符串, 输入表列);
fprintf(文件指针, 格式字符串, 输出表列);
例如:
fscanf(fp, "%d %s", &i, str);
fprintf(fp,"%d %c", j, ch);

9.文件定位函数rewind和fseek

rewind函数调用形式为:
rewind(文件指针);
它的功能是把文件内部的位置指针移到文件首。

fseek函数用来移动文件内部位置指针,其调用形式为:
fseek(文件指针, 位移量, 起始点);
其中:
  • “文件指针”指向被移动的文件。
  • “位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。
  • “起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。其表示方法如下表:
起始点表示符号数字表示
文件首SEEK_SET0
当前位置SEEK_CUR1
文件末尾SEEK_END2
 
例如:
fseek(fp, 100L, 0);
表示把位置指针移到离文件首100个字节处。

还要说明的是fseek函数一般用于二进制文件,在文本文件中由于要进行转换,所以往往计算的位置会出现错误。

10.getchar()、getch()、getche()区别

--缓冲区头文件回显
getchar()有缓冲区stdio.h有回显
getch()无缓冲区conio.h无回显
getche()无缓冲区conio.h有回显

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值