C语言----文件

文件分类:

1,文件内容——程序文件(目标文件,源文件,可执行文件)和数据文件

2,文件组织形式——顺序存取文件和随机存取文件

3,文件存储形式——ASCII码文件和二进制文件

读文件与写文件:

读文件:将磁盘中的文件传送到计算机内存的操作

写文件:从计算机内存向磁盘文件中传送数据的操作

构成文件的基本单元与流式文件:

c语言中是将文件卡看做是由一个一个的字符(ASCII)或字节(二进制文件)组成的,将这种文件称之位流式文件

文件类型(FILE):

系统为每个打开的文件都在内存中开辟了一个区域,用于存放文件的有关信息,(文件名,文件位置),这些信息保存到一个结构体类型变量中,这个结构体类型由系统定义,取名为FILE

结构体类型名必须大写(FILE)

ASNIC的缓冲文件系统:

系统自动在内存区为每个正在使用的文件开辟一个缓冲区

从内存中向磁盘文件中输出数据时,必须先输出到缓冲区中,待缓冲区中的数据满后,再一起输出到磁盘文件中去

从磁盘文件中向内存读入数据的时候,首先将一批数据读入到缓冲区中,在从缓冲区中将数据逐个送到程序数据区

文件的打开与关闭:

对文件进行操作之前必须先打开该文件,使用结束后,应立即关闭,以免数据丢失

 fopen()函数打开一个文件:

 用法:

 FILE *fopen("文件名","操作方式");返回一个指向文件的指针,如果不能实现打开指定文件的操作,则返回一个NULL

(1)文件名,是指要打开或要创造的文件的名字,如果这里使用的是字符数组或字符指针,则不加双引号

一般写法:

if((fp=fopen(“文件名”,“操作方式”))==NULL){

    printf(“error!”);

    exit(0);

}

fclose()函数关闭一个文件:

用法:int fclose(FILE *文件指针);

功能:关闭文件指针所指向的文件,如果正常关闭,则返回0,否则返回非0

例如:

fclose(fp);//关闭fp所指向的文件

文件的读写操作:

1,读写文件中的一个字符:

把一个字符写到文件中——fputc();

用法:int fputc(字符数据,文件指针);

功能:将字符数据输出到文件指针所指向的文件中去,同时将读写位置的指针向前移动1个字节如果输出成功,则函数返回值就是输出的字符数据,否则,返回一个符号常量EOF

代码:

FILE *fp;

    if((fp=fopen("D:/1.txt","w"))==NULL){

        printf("error!");

        exit(0);

    }

    char ch;

    while(1){

        ch=getchar();

        if(ch=='@'){

            break;

        }

        fputc(ch,fp);

    }

    fclose(fp);

结果:


C语言----文件_第1张图片

从文件中读取一个字符——fgetc()函数和feof()函数

int fgetc(“文件指针”);

功能:从文件指针所指向的文件中,读入一个字符,同时将读写位置的的指针向前移动一个字节,该函数没有出错返回值。

EOF,在ASCII码文件执行读入操作的时候,如果遇到文件尾,则读操作函数返回一个文件结束标志EOF,在对二进制文件执行读入的时候,必须使用feof()来判断是否遇到文件尾。

代码:

FILE *fp;

    if((fp=fopen("D:/1.txt","r"))==NULL){

        printf("error!");

        exit(0);

    }

    char ch;

    for(;(ch=fgetc(fp))!=EOF;){

        putchar(ch);

    }

    fclose(fp);

结果:


int feof(文件指针)

功能:在执行读文件的时候,如果遇到文件尾,则返回1,否则返回0;feof()函数同时适用于ASCII和二进制文件。

for(;!feof(fp);){

        ch=fgetc(fp);

        putchar(ch);

    }



2,读写文件中的一个字符串:

int  fputs(字符串,文件指针);

功能:指定文件输出的一个字符串,同时将读写位置的指针向前移动“字符串长度”个字节,如果输出成功,返回0,否则返回非0;

代码:

FILE *fp;

    char a[80];

    if((fp=fopen("D:/1.txt","w"))==NULL){

        printf("error!");

        exit(0);

    }

    gets(a);

    fputs(a,fp);

    fclose(fp);

结果:


C语言----文件_第2张图片

char *fgets(指针,串长度+1,文件指针);

功能:从指定文件中读入一个字符串,存入“字符数组/字符指针中”,并在末尾自动加一个‘\0’结束标志,同时将读写位置的指针向前移动“字符串长度”个字节。

如果在读入规定长度之前遇到文件尾EOF或换行符,读入结束

fgets(a,strlen(a)+1,fp);

puts(a);

3,读写一个数据块:

一次读写一个数据块:

int fread(void *buffer,int size,int count,FILE *fp);

int fwrite(void *buffer,int size,int count,FILE *fp);

从fp所指向的文件的指针位置开始,一次读入size个字节,重复count次,并将读入的数据存放到从buffer开始的内存中,同时将读写位置指针向前移动size*count个字节。


4,对文件进行格式化读写:

int fprintf(文件指针,“格式符”,输入变量首地址表);

int fprintf(文件指针,“格式符”,输出参量表);

例如:int i=3,float f=9.8;

......

fprintf(fp,"%2d,%6.2f",i,f)

.....

fprintf()函数的作用,将变量i按照%2d的格式,变量f按照%6.2f的格式,以逗号作为分隔符,输出到fp所指向的文件中;


5,读写函数选用原则:

(1)读写一个字符的数据,选用fputc()和fgetc()函数

(2)读写一个字符串的时候,选用fgets()和gputs()函数

(3) 读写一个或多个不含格式的数据的时候,选用fread()和fwrite() 函数

(4) 读写一个或多个函格式的数据时,选用fscanf()和fprintf()函数

你可能感兴趣的:(C语言----文件)