配色: 字号:
第10章 文件
2016-06-21 | 阅:  转:  |  分享 
  
第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);/文件关闭/}
献花(0)
+1
(本文系信检彭博海...首藏)