C语言之文件操作

文件的定义

磁盘上的文件是文件。
但是在程序设计中,我们一般谈的文件有两种:程序文件(包括源程序文件(.c),目标文件(.obj),可执行程序(.exe))、数据文件(文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件)

文件的类型

  1. 求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。
  2. 数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。
    在这里插入图片描述

文件的打开和关闭

文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。
在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的
关系。ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件。
打开方式如下:

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

文件的顺序读写

功能函数名适用于
字符输入函数fgetc所有输入流
字符输出函数fputc所有输入流
文本行输入函数fgets所有输入流
文本行输出函数fputs所有输入流
格式化输入函数fscanf所有输入流
格式化输出函数fprintf所有输入流
二进制输入fread所有输入流
二进制输出fwrite所有输入流

对比一组函数

scanffscanfsscanf
从控制台输入从文件输入从指定字符串输入
从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与 fgets有区别,fgets遇到空格不结束。利用它可以从字符串中取出整数、浮点数和字符串等等
scanf("%d,%d,%d", &a, &b, &c);fscanf(fp,"%s%d%lf",a,&b,&c)sscanf("123456 ", “%4s”, str);
printffprintfsprintf
把格式化字符串输出到标准输出是把格式化字符串输出到指定文件中把格式化字符串输出到指定字符串

文件操作函数

  1. fseek函数
    功 能: 重定位流上的文件指针
    用 法: int fseek(FILE *stream, long offset, int fromwhere);
    描 述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字 节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
    返回值: 成功,返回0,否则返回其他值。
    2.ftell函数
    功 能: 返回当前文件位置,也就是说返回FILE 指针当前位置。
    用 法: long ftell(FILE *stream);
    描 述: 函数 ftell() 用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置。
    3.rewind函数
    功 能: 将文件内部的位置 指针重新指向一个流( 数据流/文件)的开头
    用 法: void rewind(FILE *stream);
    4.feof函数
    功 能: 该函数用来判断文件是否结束。
    用 法: int feof(FILE *fp)
    返回值: 0:假值,表示文件未结束。
        1:真值,表示文件结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值