第10章文件文件是具有文件名的一组相关信息的集合。操作系统以文件为单位对外存数据进行管理。C语言采用流式文件,对文件存取以字节为单位。 流式文件分为文本文件和二进制文件。标准C采用缓冲文件系统,即自动在内存为正使用的文件开辟缓冲区。文件指针:正使用的文件都 在内存中有控制块(FCB),存放文件的有关控制信息。C语言定义FILE结构体类型的变量来描述FCB。例如FILEf1; 还可以定义FILE指针变量如FILEfp;通过文件指针找到该文件的FCB,实现对文件的访问。如果有n个文件,则应设n个指针 变量分别指向n个文件(文件的FCB),以访问文件。文件打开方式r只读w只写r+先读后写w+先写后读rb 只读(二进制文件)文件操作:C语言没有I/O语句,对文件的操作用库函数实现。对磁盘文件的操作必须“先打开,再读写,最后关闭” 。fopen函数:以指定方式打开文件。形式:fopen(文件名,使用方式);返回值是被打开文件的文件指针;打开 失败,返回NULL(0)。fclose函数:文件关闭。形式:fclose(文件指针)例FILEf1; if((f1=fopen("A","r"))==NULL)/打开文件A/{printf("can''tope nfileA\n");exit(0);}fclose(f1);fputc(ch,fp);/把 ch写到fp所指文件中/ch=fgetc(fp);/从fp所指文件读入一个字符赋给ch,遇 文件结束符EOF(-1)返回。/feof(fp)用来测试fp所指文件是否结束,如结束返回1 (真);否则为0(假)。rewind(fp);/将fp所指文件的位置指针置于文件开头/fr ead(buffer,size,count,fp);fwrite(buffer,size,count,fp);fscanf(f p,格式字符串,输入表列);fprintf(fp,格式字符串,输出表列);fgets(str,n,fp);fputs(str ,fp);fseek(fp,offset,startpoint);ftell(fp);ferror(fp);clearer r(fp);例:将文件A(已存在)内容复制到文件B,再将文件B内容显示。#include"stdio.h“ main(){FILEf1,f2;charch;if((f1=fopen( "A","r"))==NULL)/打开文件A/{printf("can''topenfileA\n"); exit(0);}if((f2=fopen("B","w+"))==NULL)/打开文件B/ {printf("can''topenfileB\n");exit(0);}while(!feof(f 1))/A未结束/{ch=fgetc(f1);fputc(ch,f2);}/从A读字符送入B/ rewind(f2);/重置文件B的读写指针/while(!feof(f2)){ch =fgetc(f2);putchar(ch);}/显示文件B内容/fclose(f1);fclose(f2);/文件关闭/} |
|