- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. fputs 函数 调用形式:fputs(str,fp); 功能:把字符串输入到文件中去
输出成功:函数返回非0,否则为0。
10.9 fread函数和 fwrite函数(自学) fread和 fwrite函数用来读写二进制文件
调用形式:fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp); 其中: buffer是数据块的指针,对fread,它是一个内存块 的首地址,数据存入这个内存中;对fwrite,它是 要输出的数据块的起始地址。 size是每个数据块的字节数
注:fputc函数的调用形式和功能与之完全相同.
例10.1 把从键盘输入的文本按原样输出 到 名为file_a.dat文件中去,用字符@作为结束标 志. #include “stdio.h”
void main()
{
FILE *fpout;
char ch;
if((fpout=fopen(“file_a.dat,”w”))==NULL)
10.6 判文件结束函数feof
以EOF作为文件结束标志的文件必须是文本文件。在文 本文件中,数据是以ASCII代码值的形式存放的,范围 是0到255,不可能出现-1,因此可以用EOF作为结束标 志
当数据以二进制形式存放到文件中去,就会有 -1的出现, 因此不能采用EOF作为结束标志,我们用feof函数来判 断文件是否结束 如果遇到文件结束,函数feof(fp)的值为1,否则为0
如:fprint(fp,”%d %d”,x,y); 其中fp已指向一个已 打开的文本文件,它是把二个整数按%d格式输出 到fp所指的文件中.
注: fprint(stdout,”%d %d”,x,y); 等价于 print(”%d %d”,x,y);
10.7 fgets函数和 fputs函数 1. fgets函数
C语言的设备文件
在C语言中,把与主机相连的各种外部设备,如显示器、
打印机、键盘等外部设备也看作是一个文件,把向显示器 和打印机的输出看作是对该设备文件的写操作,而将从键
盘的输入看作是对该设备文件的读操作。
在C语言中,显示器被定义为标准输出文件,键盘被定义为 标准输入文件。在前面常用的printf是向标准输出设备显示
count是每读写数据块的个数, fp是文件指针
【例10-5】编一程序,从键盘输入100个整数,并存入 c:\file2.dat文件中。 源程序 #include “stdio.h” # include “stdlib.h” #define N 100 main() {FILE *fp;int data[N],i; for(i=0;i<N;i++) scanf("%d",&data[i]); if((fp=fopen("file2.dat","w+"))==NULL) printf("Can not open file idata.dat!"); else{ fwrite(data, sizeof(int),N,fp); fclose(fp); }}
中指定文件所在的路径。例如文件file1.dat在 D盘的file目录下,
则常量字符串可写成“d:\\file\\ file1.dat”,路径符“\”要写成转 义字符“\\”。
常用的文件打开文件方式: (见P216)
“r”,“rb”
“w”,”wb”
要求掌握r w a三种打开方 式
“a”,”ab”
“r+”,”rb+” “w”,”wb+” “a+”,”ab+” 注:当运行一个C程序时,系统会自动打开三个文 件 文件指针为:stdin,stdout,stderr,并在stdio.h 头文 件中进行了说明P217
{printf(“can‟t open this file!\n);exit(0);}
ch=getchar( );
putc(ch,fpout)
while(ch!=„@‟)
{fputc(ch,fpout); ch=getchar();}
fclose(fpout);
}
2. 调用getc(或fgetc)函数输入一个字符 调用形式:ch=getc(pf);
形式:fscanf(文件指针,格式控制字符串,输入表项) 如:fscanf(fp,”%d%d”,&a.&b); 其中fp已指向一个 已打开的文本文件. 注:fscanf(stdin,”%d%d”,&a,&b); 与scanf(”%d%d”,&a,&b); 完全等价
2.fprintf函数
功能:按格式将内存中的数据转换成对应的字符, 并以ASCII代码输出 到文本中 形式:fprintf(“文件指针,格式控制字符串,输出表 项)
FILE *fpin, *fpout;
fpin=fopen(“file_a.dat”,”r”); Fpout=fopen (“file_b.dat”,”w”);
filecopy(fpin,fpout);
fclose(fpin); fclose(fpout);
}
void filecopy(FILE *fpin, FILE *fpout)
器输出数据,而scanf是从标准输入文件上输入数据。
对用户使用的普通数据文件需要使用文件指针才能实现对 文件的操作。
10.1问题的提出与程序示例
#include<stdio.h> #include<stdlib.h> #define N 1000 void main( ) { int s[N], i; FILE *fp; if ((fp=fopen(“d:\\suijishu.dat”, “w”))==NULL) /*打开文件*/ {printf(“cannot open this file\n”); exit(0);} for(i=0; i<N; i++) s[i]=rand( )%101; /*产生N个随机数*/ for(i=0; i<N; i++) { printf(“%5d”,s[i]); if((i+1)%10==0) printf(“\n”); } printf(“\n”); fwrite(s,2,N,fp); /*把数组中的数据写到fp指向的文件中*/ fclose(fp); }
10.2 文件指针
形式:FILE *指针变量名;
如:FILE *fp1,*fp2; /* fp1,fp2 称为文件 指针*/
10.3 打开文件
•对文件进行操作前,必须打开文件,使得读写文件与实 际的数据联系起来.一定要用库函数fopen。
•调用形式:fopen(文件名,文件使用方式); •函数返回一个指向FILE类型的指针 •如:FILE *fp; fp=fopen(“file_a”,”r”); 调用之后:fp指向了文件file_a.
说明:此函数既可以判断二进制文件,也可以用来判断 文本文件。
10.3 编写程序,把一个文本文件(源文件file_a.dat)复制 到另一个文件(目标文件file_b.dat)
#include <stdio.h>
void filecopy (FILE *, FILE *)
Void main( ) {
If( (fp=fopen(“fname.dat”, “r”) )==NULL) { printf( “open error\n”); exit(0); } while( !feof(fp)) { getc(fp) num++; } printf(“num=%ld\n”, num); fclose(fp件的概念
•输出时,系统不添加任何信息,输入时,一个一个地读入 数据,直到遇到EOF或文件结束标志
•存取方式 :顺序存取和直接存取。
•顺序存取:读或写的操作,总是从文件的开头开始,顺序读写。
•数据可以按文本形式或二进制形式存放在介质上 •直接存取:又名随机存取.首先读写字节号,然后直接对此位 置上的数据进行操作. •对文件的输入或输出的操作实际上对缓冲区的操作
(1)单字符读写函数:fgetc和fputc (2)格式化读写函数:fscanf和fprinf
(3)字符串读写函数:fgets和fputs
(4)数据块读写函数:fread和fwrite
(1)调用getc(fgetc)和putc(fputc)函数进行输入和输出
当打开文件后,我们可以对文件进行输入和输出, 可调用如下函数 1.调用putc(或fputc)函数输出一个字符 调用形式: putc(ch,fp); 功能:将字符ch写到文件指针为fp所指的文件中去 输出成功:函数返回所输出的字符,否则返回EOF值.
第十章 文件
10.1 C语言文件的概念
•文件:记录在外部介质的数据集合。
•C语言中,对于输入,输出的数据按“数据流”的形式处理。
•C语言中,输入,输出文件都以数据流的形式存储在介质上。 也就是以文件的形式存放在磁盘上。 •当调用输入函数从外部文件中输入数据赋给程序中的变 量时,这种操作称为输入或读。 •当调用输出函数从程序中的变量的值输出到外部文件中, 这种操作称为输出或写。
ch=fgetc (fpin);
while(ch!=EOF)
{ putchar(ch); ch=fgetc(fpin);} fclose(fpin); }
举例:统计文件fname.dat中字符的个数 #include “stdio.h”
void main ( )
这个函数是判断文 件结束标志
FILE *fp; long num=0;
10.3.3 关闭文件
当对文件的读写操作后,必须关闭它 调用形式:fclose(文件指针) 返回成功:函数返回0,否则返回非0。文件指针与文件名脱 离关系。