- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
;;8.1文件概述;ASCII文件又称为文本文件。在这种文件中,每个字节存放一个字符的ASCII码值。;根据文件的存取方式,数据文件可分为顺序文件和随机文件。
(1)顺序存取只能依先后次序存取文件中的数据,存取完第一字节,才能存取第二字节;存取完第n-1字节,才能存取第n字节。
(2)随机存取也称直接存取,可以直接存取文件中指定的数据,例如,可以直接存取指定的第i个字节(或字符),而不管第i-1字节是否已经存取。
文件的存取方式与该文件是文本文件还是二进制文件无关,即它们都可以用顺序方式或随机方式进行存取。;;文件缓冲区;;;文件操作步骤;8.2文件的打开与关闭;使用
方式;①w方式,只能用于向文本文件写数据。若指定的文件不存在,则创建该文件;若指定的文件已存在,则先删除文件中的全部内容。文件打开时,文件位置指针指向文件开头。
②r方式,只能用于从文本文件中读数据。若指定的文件不存在,则出现错误信息。文件打开时,文件位置指针指向文件开头。
③a方式,用于向文件末尾添加数据。若指定的文件存在,将它打开,并将文件位置指针指向文件末尾,新写入的内容被追加在原有数据之后;若指定的文件不存在,则创建该文件,这时文件位置指针指向的既是文件头,也是文件尾。
④r+,w+,a+方式,用于以既可读也可写的方式打开文本文件。r+:用该方式打开文件后,若写入数据,则写入的内容只覆盖新数据需要的空间,其后的原有数据并不丢失。
w+:用该方式打开文件后,文件原有内容全部丢失,只能先向文件写入数据,然后再读出。
a+:用该方式打开文件后,将文件内容保留。读时从文件开头读,写时则追加到文件末尾。
⑤上述6种方式加上字母“t”后仍表示对文本文件打开。
⑥上述6种方式加上字母“b”后就表示对二进制文件打开。;在打开一个文件时有时会出错。;FILE*fopenfun(char*file,char*model)
{FILE*fp;
if((fp=fopen(file,model))==NULL)
{printf(Cannotopenfileof%s.\n,file);
exit(0);
}
elsereturnfp;
};fclose(fp);;fclose(fp);;8.3文件的读写操作;;typedefstructCharacter
{charname[32];
intage;
charskill[32];
}CHARACTER;
intmain(void)
{FILE*fp;
char*in_file_name=swordsman.txt;
CHARACTERtmp;
intn,i=0;
fp=fopenfun(in_file_name,w);
scanf(%d,n);
while(in)
{scanf(%s%d%s,tmp.name,tmp.age,tmp.skill);
fprintf(fp,%s%d%s\n,tmp.name,tmp.age,tmp.skill);
i++;
}
fclose(fp);
return0;
};typedefstructCharacter
{charname[32];
intage;
charskill[32];
}CHARACTER;
intmain(void)
{FILE*fp;
char*in_file_name=swordsman.txt;
CHARACTERtmp;
fp=fopenfun(in_file_name,w);
scanf(%s,tmp.name);
while(strcmp(tmp.name,*)!=0)
{scanf(%d%s,tmp.age,tmp.skill);
fprintf(fp,%s%d%s\n,tmp.name,tmp.age,tmp.skill);
scanf(%s,tmp.name);
}
fclose(fp);
return0;
};●判文
文档评论(0)