- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c程序设计 第13章 文件 答案解析
例13.1 程序为:
#include stdio.h
#include stdlib.h
void main()
{
FILE *fp;
char ch,filename[10];
scanf(%s,filename);
if((fp=fopen(filename,w))==NULL)
{
printf(cannot open file\n);
exit(0);
}
ch=getchar();
ch=getchar();
while(ch!=#)
{
fputc(ch,fp);putchar(ch);
ch=getchar();
}
putchar(10);
fclose(fp);
}
例13.2 程序为:
#include stdio.h
#include stdlib.h
void main()
{
FILE *in, *out;
char ch,infile[10],outfile[10];
printf(Enter the infile name:\n);
scanf(%s,infile);
printf(Enter the infile name:\n);
scanf(%s,outfile);
if((in=fopen(infile,r))==NULL)
{
printf(cannot open file\n);
exit(0);
}
if((out=fopen(outfile,w))==NULL)
{
printf(cannot open file\n);
exit(0);
}
while(!feof(in)) fputc(fgetc(in),out);
fclose(in);
fclose(out);
}
注:在该程序的运行中,每复制一次就会产生一个乱码置于最后,并依次叠加。这不是个优秀的程序。
13.5.1 rewind函数:
#include stdio.h
void main()
{
FILE *fp1,*fp2;
fp1=fopen(file1.c,r);
fp2=fopen(file2.c,w);
while(!feof(fp1)) putchar(getc(fp1));
rewind(fp1);
while(!feof(fp1)) putc(getc(fp1),fp2);
fclose(fp1);fclose(fp2);
}
例13.5
#includestdlib.h
#includestdio.h
struct student_type
{
char name[10];
int num;
int age;
char sex;
}stud[10];
void main()
{
int i;
FILE *fp;
if((fp=fopen(file22.c,rb))==NULL)
{
printf(can not open file\n);
exit(0);
}
for(i=0;i10;i+=2)
{
fseek(fp,i*sizeof(struct student_type),0);
fread(stud[i],sizeof(struct student_type),1,fp);
printf(%s %d %d %c\n,stud[i].name,stud[i].num,stud[i].age,stud[i].sex);
}
fclose(fp);
}
注:这个程序是对的,但常用于处理二进制文件,因为文本文件要发生字符转换,计算位置时常发生混乱。
习题
13.1 对c文件操作有些什么特点?什么是缓冲文件系统?什么是非缓冲文件系统?这两者的缓冲区有什么区别?
答:c语言把文件看作是一个字符的序列级,即由一个一个字符的数据顺序组成。根据数据的组织形式,可以分为:ASCII文件(文本文件)和二进制文件。一个c文件是一个字节流或二进制流(流式文件)。它允许对文件存取一个字符,这就增加了处理的灵活性。
缓冲文件系统:是指系统自动在内存中为每一个正在使用的文件开辟一个缓冲区,如果从磁盘向内存读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区,然后再从缓冲区逐个地将数据送到程序数据区中去。
非缓冲文件系统:是指系统不自动开辟确定大小的缓冲区,而有程序为每个文件设定缓冲区。
用缓冲文件系统进行的输入输出又称高级磁盘输入输出,用非缓冲文件系统进行的输入输出又称为低级输出输入系统。ANSI C标准不采用非缓冲文件系统,而只采用缓冲文件系统,即既用缓冲文件系统处理文本文件,也用它处理二进制文件,也就是将缓冲文件系统扩充为可以处理二进制文件。
13.2
文档评论(0)