Board logo

标题: C语言文件系统应用实例分析 [打印本页]

作者: 苹果也疯狂    时间: 2015-3-6 23:42     标题: C语言文件系统应用实例分析

文件操作在程序设计中是非常重要的技术,文件的数据格式不同,决定了对文件操作方

    式的不同。

    [例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 Y I N G S H A N G H A 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 I M I N G 7 6 5 4 3 2 2

    这两个文件格式基本一致,姓名字段占1 4个字符,家庭住址或电话号码长度不超过1 4个

    字符,并以回车结束。文件结束的最后一行只有回车符,也可以说是长度为0的串。在两个文

    件中,由于存放的是同一批人的资料,则文件的记录数是相等的,但存放顺序不同。我们可

    以任一文件记录为基准,在另一文件中顺序查找相同姓名的记录,若找到,则合并记录存入第三个文件,将查找文件的指针移到文件头,以备下一次顺序查找。

    #Include <Stdio.H>

    #Include <Stdlib.H>

    #Include <Conio.H>

    #Include <String.H>

    M A I N ( )

    {

    FILE *Fptr1,*Fptr2,*Fptr3; / * 定义文件指针* /

    Char Temp[15],Temp1[15],Temp2[15];

    If ((Fptr1=Fopen("Addr.Txt","R"))==NULL)/ *打开文件* /

    {

    Printf("Cannot Open File");

    E X I T ( 0 ) ;

    }

    If ((Fptr2=Fopen("Tel.Txt","R"))==NULL)

    {

    Printf("Cannot Open File");

    E X I T ( 0 ) ;

    }

    If ((Fptr3=Fopen("Addrtel.Txt","W"))==NULL)

    {

    Printf("Cannot Open File");

    E X I T ( 0 ) ;

    }

    C L R S C R ( ) ; / *清屏幕* /

    While(Strlen(Fgets(Temp1,15,Fptr1))>1) 读 /回*的姓名字段长度大于1* /

    {

    F G E T S ( T E M P 2 , 1 5 , F P T R 1 ) ; / * 读地址* /

    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 , 1 5 , F P T R 2 ) ;

    F G E T S ( T E M P 2 , 1 5 , F P T R 2 ) ;

    } While (Strcmp(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 ) ;

    }

    程序运行后,我们来看一下合并后的文件A D D R T E L . T X T的内容:

    Type Addrtel.Txt

    Hejie Tianjing

    8 7 6 4

    Liying Shanghai

    1 2 3 4 5

    Liming Chengdu

    7 6 5 4 3 2 2

    Wangpin Chongqing

    8 7 6 4 3




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0