当前位置:
文档之家› C语言程序设计教程第二版.ppt
C语言程序设计教程第二版.ppt
fputs(str,fp)
str:为指向字符串的指针或字符数组 功能: 该函数将str所指向的字符串活字符串常量输 出到指定的文件中,但不包括字符串结束符 当操作成功时,函数的返回值为0,否则为一个非0值(tc中)
(2)fgets函数
fgets(str,n,fp);
功能: 从指定的文件中读入n个字符,存放到str中,并 加‘\0’,函数的返回值为str的地址
➢ 系统将键盘、显示器处理为标准设备文件。 ➢ C系统对文件的处理采用缓冲文件系统
12.2、文件类型指针
• 每个被使用的文件都在内存中开辟了一个区,用来存放该文 件的信息。
• 文件的信息保存在一个名为FILE的结构体类型的变量中。该 结构体类型由系统定义
• 定义文件型指针变量: FILE * 指针变量名
例如12.5 用fread()函数和fwrite()函数修改【例12.4】。
#include "stdio.h" #define SIZE 3 struct student { int num; char name[10]; int score; }std[SIZE]; main( ) { int i;
exit(0); } ch=getchar(); while(ch!=’$’) { fputc(ch,fout);/*将字符变量ch的值输出到文件中*/ putchar(ch); /* 将字符变量ch的值输出到屏幕*/
ch=getchar( ); } fclose(fout);/* 关闭文件*/ }
exit(0); } while(strlen(gets(str))>0)
/* 从键盘读入的字符串长度大于0时,执行循环*/ { fputs(str,fp); /*将字符串写入文件*/
fputs("\n",fp);/*将换行符写入文件*/ } fclose(fp); }
12.4.3、fprintf、fscanf函数:读写一组数据
符串,并将它们原样存到名为file1.txt文件中。
#include"stdio.h" main( ) { FILE *fout; /*定义文件指针*/
char ch; if((fout=fopen(“file1.txt”,"w"))==NULL) /*为写打开文件*/ { printf("can not open file\n");
12.3 打开、关闭和检测文件
3、检测文件
(3)清除错误标志和文件结束标志函数(clearerr()函数) clearerr(文件指针) ;
功能:用于清除文件指针所指向的文件的出错标志和文 件结束标志,使它们的值为0。假设在调用一个输入函数时 出现错误,这时ferror()函数值为一个非零值,在调用 clearerr()函数后,ferror()函数值变为0值。
如: 顺序读入磁盘文件中的字符并输出
对于文本文件:
ch=fgetc(fp); while(ch!=EOF)
{ putchar(ch); ch=fgetc(fp);
}
对于二进制文件:
while(!feof())
{ ch=fgetc(fp); putchar(ch);
}
例如12.1 编写程序,从键盘输入一个以“$”结尾的字
返回值是相对于文件开头的位移量(字节数),如果 函数返回值为-1L,表示出错。例如:
k=ftell(fp); if(k==-1L) prinif("error"); 变量k存放位置指针的当前位置。
2、关闭(fclose函数) fclose(文件指针)
12.3 打开、关闭和检测文件
3、检测文件
(1) 检测文件是否结束函数(feof()函数) feof(文件指针);
功能:检测“文件指针”所指向文件中的位置指针 是否处于文件结束位置,如果feof()函数返回值为0, 表示文件未结束(即文件的位置指针没有指到文件末 尾)。如果返回一个非零值,表示文件结束(即文件 的位置指针已经指到文件末尾)。
使用文件的方式详见表12.1 fopen函数是一个返回指针值的函数 当返回值是NULL时,表示无法打开该文件
常采用下列方式打开一个文件: if ((fp=fopen(“file1”,”r”)==NULL)
{ printf(”can’t open this file \n”) exit(0); /* 关闭文件函数 */ }
12.5 文件的定位
12.5.1 rewind()函数 rewind(文件指针); 功能:将文件的位置指针置于文件的开头。此函数没
有返回值。 12.5.2 fseek()函数和随机读写
fseek(文件类型指针,位移量,起始点)。 功能:移动文件的位置指针到指定的位置上,随后的 读写操作将从此位置开始。利用fseek()函数可以实现文件 的随机读写。
【例12.3】将从键盘上输入的若干行字符输出到磁盘文件中。
#include "stdio.h" #include "string.h" main( ) { FILE *fp;
char str[80]; if((fp=fopen("lx.txt", "w"))==NULL) { printf("File can not opened\n");
12.3 打开、关闭和检测文件
3、检测文件
(2)检测错误函数(ferror()函数) ferror(文件指针);
功能:检测对文件指针所指向的文件在用各种输入、输 出函数进行读写时是否发生了错误,如果ferror()函数返回 值为0,表示未出错;如果返回一个非零值,表示出错。在 执行fopen()函数时,ferror()函数的初始值自动置为0。
FILE *fout; if((fout=fopen("stud.bxt","wb"))==NULL) { printf("can not open file\n");
exit(0); } for(i=0;i<SIZE;i++= {scanf("%d%s%d",&std[i].num,std[i].name,&std[i].score) ; fwrite(&std[i],sizeof(struct student),1,fout); } fclose(fout); }
【例12.6】 在磁盘文件(ss.bxt)上存有10个实型数据。 编写程序将第1、3、5、7、9个数据输入到计算机,并 在屏幕上显示出来。
#include "stdio.h" main( ) { int i;float d[10];
FILE *fp; if((fp=fopen(“ss.bxt”,"rb"))==NULL) { printf("cannot open file\n");
例如12.2编写程序读入【例12.1】生成的文本文件
file1.txt,并将文件内容原样输出到显示屏上。
#include "stdio.h" main( ) { FILE *fin; /*定义文件指针*/
char ch; if((fin=fopen(“file1.txt”,"r"))==NULL) /*为读打开文件*/ { printf("can not open infile\n");
第12章 文件
C语言文件。 文件类型指针。
打开、关闭和检测文件
文件的输入和输出 文件的定位
12.1、C语言文件
➢ 文件: 存储在外部介质上的、可由计算机识别的 一组相关数据的集合。
➢ C程序文件,是一个字符序列。
➢ 按文件中数据的组织形式(即代码存放形式)可分为
两种文件:
▪ ASCII文本文件:采用ACSII代码存储方式,每个字符占 一个字节,存储其对应的ASCII码. ▪ 二进制文件:采用C规定的内存数据的存储方式
exit(0); } while(!feof(fin)) /*当没有到文件末尾时执行循环*/ { ch=fgetc(fin); /*从文件中读一个字符*/
putchar(ch); /* 将字符变量ch的值输出到屏幕*/ }
fc1ose(fin);/* 关闭文件*/ }
12.4.2、fputs,fgets函数:读写一个字符串 (1)fputs函数
如: FILE * fp; fp:将指向某个文件的结构体变量
C规定了三个标准设备文件指针,无需再定义。 stdin:标准输入文件(键盘) stdout:标准输出文件(显示器) stderr:标准错误输出文件(显示器)
12.3 打开、关闭和检测文件
1、打开文件(fopen 函数)
FILE *FP; fp=fopen(文件名,使用文件方式)
exit(0); } for(i=0;i<10;i+=2) { fread(&d[i],4,1,fp);
printf("%8.2f\n", d[i]); fseek(fp,4L,1);/*将位置指针移到离当前位置4个字节处 */ } fclose(fp); }
12.5 文件的定位
12.5.3 ftell()函数 ftell(文件指针); 功能:获得文件位置指针的当前位置。fte11()函数
名和成绩,并将它们存放到磁盘文件stud.txt中。
#include "stdio.h" #define SIZE 3 main( ) { int i,num;
char name[10]; float score; FILE *fout; if((fout=fopen("stuห้องสมุดไป่ตู้.txt","w"))==NULL) { printf("can not open file\n");
12.4、文件的输入和输出
12.4.1、fputc,fgetc函数 (1)fputc函数:把一个字符写到文件中
fputc(ch,fp) ch:为待输出的字符 fputc函数的返回值:当输出成功时为ch的值
当输出不成功时为EOF即 -1。