C语言,第1张

C语言,第2张

文件操作是程序设计中非常重要的技术。文件的不同数据格式决定了不同类型的文件操作符

[例8-10]我们需要同时处理三个文件。文件a d d r. t x t记录了一些人的姓名和地址;文件
t e l. t x t以不同的顺序记录了上述人员的姓名和电话号码。希望通过两个文件的对比,在第三个文件A D D R T E L T X T中记录同一个人的姓名、
地址和电话。首先看一下前两个文件的内容:
type addr . txt
H E J I E T I A N J I N G
L I I N G S H A N G H I
L I M I N G C H E N G D U
w A N G p I N C H o N G q I N G
type tel . txt L I y I N G 1 2 3 4 5
h e j I e 8 7 6 4
w a N G p I N 8 7 6 4 3
L M I N G 7 654322
这两个文件的格式基本相同,姓名字段占1 4个字符,家庭住址或电话号码长度不超过1 4个字符
,以enter结尾。 文件最后一行只有回车,也可以说是长度为0的字符串。在两个文档
中,因为存储的是同一个人的数据,所以文档中的记录数是相等的,只是存储顺序不同。我们可以
基于任何文件记录按顺序搜索另一个文件中同名的记录。如果找到,记录将被合并并存储在第三个文件中,搜索文件的指针将被移动到文件头,以便进行下一次顺序搜索。
# include
# include
# include
# include
m a I n()
{
FILE * fp1、*fp2、* fp3/*定义文件指针*/
Chartemp [15],Temp1 [15],temp 2[15];
if ((fp1 = fopen ("addr.txt "," r ")= = null)/*打开文件*/
{
printf("无法打开文件");
e x I t(0);
}
if((fp2 = fopen(" tel . txt "," r"))==NULL)
{
printf("无法打开文件");
e x I t(0);
}
if((fp3 = fopen(" addrtel . txt "," w"))==NULL)
{
printf("无法打开文件");
e x I t(0);
}
c l r s c r();/*清屏*/
While (slen (FGETS (Temp1,15,FP1))> 1)read/return *的name字段长度大于1 */
{
F G E T S (T E M P 2,15,F P T R 1/* read address */
F P u T S(T E M P 1,F P T R 3);/*把你的名字写进合并文件* /
f p u t s (t e m p 2,f p t r 3);/*将地址写入合并文件* /
s t r c p y (t e m p,t e m p 1);/*保存名称字段* /
do /*查找同名记录*/
{
F G E T S (T E M P 1,15,F P T R 2);
f g e t s ( t e m p 2,1 5,f p t r 2);
} while (scmp(temp,temp1)!=0);
r e w I n d(f p t r 2);/*将文件指针移动到文件头进行下一次搜索* /
f p u t s (t e m p 2,f p t r 3);/*将电话号码写入合并文件*/
}
f c l o s e(f p t r 1);/*关闭文件*/
f c l o s e(f p t r 2);
f c l o s e(f p t r 3);
}
程序运行后,我们来看看合并文件d d r t e l. t x t的内容:
typeaddrtel.txt
何杰天京
8 7 64
李颖上海
1 2 3 4 5
黎明成都
7 6 5 4 3 2 2
王品重庆
8 7 6 4 3

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C语言

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情