黑马程序员——c语言基础之文件的概念及操作

------- android培训java培训、期待与您交流! ----------


文件的概念及分类

“文件”指存储在外部介质上数据的集合,这个数据集有一个名词,叫做文件名。

从文件编码的方式来看,文件可分为ASCII码文件和二进制文件两种。

  

对文件的操作步骤

1、引入头文件(stdio.h

2、定义文件指针

3、打开文件

4、文件读写

5、关闭文件

 

对文件的读和写是最常用的文件操作。在c语言中提供了多种文件读写的函数:

字符读写函数:fgetcfputc

字符串读写函数:fgetsfputs

数据块读写函数:freedfwrite

格式化读写函数:fscanffprinf

使用以上函数都要求包含头文件stdio.h

 

C语言文件指针

C语言中用一个指针变量指向一个文件, 这个指针称为文件指针。

声明FILE结构体类型的信息包含在头文件“stdio.h”中

一般设置一个指向FILE类型变量的指针变量,然后通过它来引用这些FILE类型变量

通过文件指针就可对它所指的文件进行各种操作。

定义说明文件指针的一般形式为:

FILE *指标变量标识符;

其中FILE应为大写,它实际上是由系统定义的一个结构,该结构中含有文件名、文件状态和文件当前位置等信息。

 

C语言中,文件操作都是由库函数来完成的。

文件的打开(fopen函数)

调用的一般形式为:

文件指针变量名=fopen(文件名,使用文件方式);

其中:

“文件指针名”必须是被说明为FILE类型的指针变量;

“文件名”是被打开文件的文件名;

“使用文件方式”是指文件的类型和操作要求;

“文件名”是字符串常量或字符串数组;

如果打开成果,返回文件的首地址,失败返回NULL

文件关闭函数(fclose函数)

文件一旦使用完毕,应用关闭文件函数把文件关闭,以避免文件的数据丢失等错误。

调用的一般形式是:

fclose(文件指针);

正常完成关闭文件操作时,fclose函数返回值为0。若返回非零值则表示有错误发生。

 

#include <stdio.h>

int main(int argc, const char * argv[]) {
    FILE *fp = NULL;//F
    fp = fopen("a.txt", "r");
    //一般我们做一个判断,当文件打开成功,我们在读写文件
    if (fp!=NULL) {
        //操作文件
    }else{
        //给用户提示
        printf("打开失败");
        getchar();//要求从键盘接受一个字符
        exit(1);//退出,非正常退出
    };
    fclose(fp);
    return 0;
}

字符写入函数fputc

功能是把一个字符写入指定的文件中。函数调用的形式为:

fputc(字符量,文件指针);

其中,待写入的字符量可以是字符常量或变量

 字符读取函数fgetc

调用的形式:

fgetc(文件指针变量名);


文件使用方式

 

数据块读写函数freadfwrite

读数据块函数调用的一般形式为:

freadbuffersizecountfp);

写数据块函数调用的一般形式为:

fwritebuffersizecountfp);

其中:

buffer:是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。

size:表示数据块的字节数。

count:表示要读写的数据块块数

fp:表示文件指针。

 

#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
    char *str ={"I LOVE YOU!"};
    FILE *fp = fopen("fwrite.txt", "w+");
    if (fp!=NULL) {
        fwrite(str, strlen(str), 1, fp);
        printf("写入成功!");
    }
    rewind(fp);
    char ch[12];
    fread(ch, sizeof(ch), 1, fp);
    printf("%s",ch);
    fclose(fp);
    return 0;
}

格式化读写函数:fscanffprintf

调用格式:

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

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

 

文件定位

移动文件内部的位置指针到需要读写的位置,再进行读写,这种读写称为随机读写。

实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。

移动文件内部位置指针的函数主要有两个,即rewind()和fseek()。

rewind函数调用形式为:

rewind(文件指针);

它的功能是把文件内部的位置指针移到文件首

fseek函数调用形式为:

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

其中:

“文件指针”指向被移动的文件。

“位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64kb时不会出错。当用常量表示位移量时,要求加后缀“L”。

“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾巴。

 

 

文件结束检测函数feof函数

调用格式:

feof(文件指针);

功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0.


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值