C语言文件学习

 目录

 

C语言文件学习

概念

文件指针 FILE

文件打开 fopen

文件关闭 close

读字符函数 fgetc

写字符函数 fputc

读字符串函数 fgets

写字符串函数 fputs

数据块读函数 fread

数据块写函数 fwrite

格式化读写函数 fscanf fprintf

文件定位 rewind fseek ftell

文件检测结束函数 feof

读写文件出错检测函数 ferror

文件出错标志和文件结束标志置 0 函数 clearerr


C语言文件学习

概念

文件时程序设计中的一个重要概念。所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,就是文件名。文件通常是驻留在外部介质(如磁盘上),在使用时才调入内存。

此处不做过相关概念的介绍,只汇总文件基本操作

文件指针 FILE

在C语言中用一个指针变量指向一个文件,这个指针被称为文件指针。通过文件指针就可以对它所指的文件进行各种操作。

FILE *fp

文件打开 fopen

FILE *fp;
fp = fopen("/C/test.txt","rb");

文件关闭 close

fclose(fp);

读字符函数 fgetc

从一个指定文件中读一个字符,形式为:字符变量=fgetc(文件指针)

c = fgetc(fp)   //从文件中读取一个字符并送入a中

PS:在文件内部有一个位置指针。用来指向文件的当前读写字节。在文件打开时,该指针总是指向文件的第一个字节。使用fgetc函数后,该位置指针将向后移动一个字节。因此可连续多次使用fgetc函数,读取多个字符。应注意文件指针和文件内部的位置指针不是一回事。文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。

写字符函数 fputc

把一个字符写入指定的文件中,形式为:fputc(字符量, 文件指针)

fputc('a',fp);  //把字符 a 写入 fp 所指向的文件中

PS:fputc 函数有一个返回值,如写入成功则返回写入的字符,否则返回一个EOF。可用此来判断写入是否成功。

读字符串函数 fgets

读字符串函数 fgets,从指定的文件中读一个字符串到字符数组中,形式为:fgets(字符数组名, n, 文件指针); 其中的n是一个正整数。表示从文件中读出的字符串不超过n-1个字符。在读入的最后一个字符后加上串结束标志 ’\0’

fgets(str, n, fp);      //从 fp 所指的文件中读出 n-1 个字符送入字符数组 str 中

PS:

  • 在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束

  • fgets 函数也有返回值,其返回值是字符数组的首地址

写字符串函数 fputs

向指定的文件写入一个字符串,其形式为:fputs(字符串, 文件指针);其中字符串可以是字符串常量,也可以是字符数组名,或指针变量。

fputs("abcd", fp);      //将字符串 abcd 写入 fp 所指的文件中

数据块读函数 fread

  • 作用:从fp所指的文件中读入count次,每次读size字节,读入的信息存在buffer地址中。

形式为fread(buffer, size, count, fp);buffer 是一个指针,在fread函数中,它表示存放输入数据的首地址

  • size表示数据块的字节数;

  • count表示要读写的数据块块数;

  • fp表示文件指针;

fread(fa, 4, 5, fp);
//从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中。

数据块写函数 fwrite

  • 作用:将buffer地址开始的信息输出count次,每次写size字节到fp所指的文件中。

    形式为fwrite(buffer, size, count, fp);buffer 是一个指针,在fwrite函数中,它表示存放输出数据的首地址

格式化读写函数 fscanf fprintf

fscanf函数,fprintf 函数与前面使用的scanf和 printf函数的功能相似,都是格式化读写函数。两者的区别在于fscanf 函数和 fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。

格式化读函数:fscanf(文件指针,格式字符串, 输入表列);

fprintf(fp,"%d",i); //将整型变量i的值以"%d"的格式输出到fp指向的文件中

格式化写函数:fprintf(文件指针,格式字符串, 输出表列);

fprintf(fp,"%d",&i); //读入fp所指向的文件中的i的值

文件定位 rewind fseek ftell

1.rewind 函数

将文件内部的位置指针移动到文件首

  • 格式为:rewind(文件指针);

2.fseek 函数,

移动文件内部位置指针

  • 格式为:fseek(文件指针, 位移量, 起始点);

注意, fseek 函数一般用于二进制文件。

“文件指针” 指向被移动的文件; “位移量"表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB时不会出错。当用常量表示位移量时,要求加后缀”L”。 "起始点"表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾,其表示方法为:

起始点表示符号数字表示
文件首SEEK_SET0
当前位置SEEK_CUR1
文件末尾SEEK_END2
fseek(fp, 100L, 0);     //把位置指针移动到离文件首 100 个字节出

3.ftell 函数

得到流式文件中的当前位置,用相对于文件开头的位移量来表示。由于文件中的位置指针经常移动,往往不容易知道其当前位置。用ftell函数可以得到当前位置。

ftell(文件类型指针)

文件检测结束函数 feof

文件结束检测函数(feof 函数),功能为判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。

  • 格式为:feof(文件指针);

读写文件出错检测函数 ferror

读写文件出错检测函数(ferror 函数),功能为检查文件在用各种输入输出函数进行读写时是否出错。如 ferror 返回值为 0 表示未出错,否则表示有错。

  • 格式为:ferror(文件指针);

文件出错标志和文件结束标志置 0 函数 clearerr

文件出错标志和文件结束标志置 0 函数(clearerr 函数),用于清除出错标志和文件结束标志,使它们为 0 值。

  • 格式为:clearerr(文件指针);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值