标题:不显示数据—感觉是没调用函数(求大神)
只看楼主
coinszzz
Rank: 1
等 级:等待验证会员
帖 子:1
专家分:0
注 册:2015-1-10
 问题点数:0 回复次数:3 
不显示数据—感觉是没调用函数(求大神)
假设有两个词典文件8-1-dict1.txt 和8-1-dict2.txt,各自存放了一些英文词条。存放格式为按行存放,每一行一个词条,并已按照英文字母的顺序排列好了序。
请编写一个程序,将这两个词典文件的内容进行合并,并生成一个新的词典文件8-1-dict3.xtx 。
要求:(1)在新的词典文件中,各个词条仍然是有序排列的。
      (2)如果一个词条既出现在8-1-dict1.txt中,也出现在8-1-dict2.txt 中,它们在新文件中只能出现一次。
8-1-dict1.txt:
apple
banana
grape
peach
8-1-dict2.txt:
apple
fish
grape
meat
#include <stdio.h>
#include <string.h>
int main (void)
{
    FILE *fp1,*fp2,*fp3;
    FILE * re(FILE *fp,int n);
    char ch[10];
    //char file[50];
    //printf("input file 's name:\n");
    //gets(file);
    fp3=fopen("8-1-dict3.txt","w+");
    fp1=fopen("8-1-dict1.txt","r");
    fp2=fopen("8-1-dict2.txt","r");
    fgets(ch,10,fp1);
    fputs(ch,fp3);
    //printf("%s",ch);
    while(1)
    {
        fgets(ch,10,fp1);
        fputs(ch,fp3);
        //printf("%s",ch);
        if feof(fp1)
        break;
    }
    fputs("\n",fp3);
    /*printf("\n");
    fflush(stdin);
    fgets(ch,10,fp2);
    fputs(ch,fp3);
    printf("%s",ch);*/
    while(1)
    {
        fgets(ch,10,fp2);
        fputs(ch,fp3);
        //printf("%s",ch);
        if feof(fp2)
        break;
    }
    fp3=re(fp3,8);
    fclose(fp1);
    fclose(fp2);
}
FILE * re(FILE *fp,int n)
{
    char ch1[10];
    char ch2[10];
    int i=0;
    int j=0;
    for (i=0;i<n;i++)
    {
        for (j=i+1;j<n;j++)
        {
            fgets(ch1,10,fp);
            //printf("%s",ch1);
            fgets(ch2,10,fp);
            if(strcmp(ch1,ch2)>0)
            {
                fputs(ch1,fp);
                fputs(ch2,fp);
            }
            if(strcmp(ch1,ch2)<0)
            {
                fputs(ch2,fp);
                fputs(ch2,fp);
            }
            if(strcmp(ch1,ch2)==0) fputs(ch1,fp);
            if (feof(fp))
            break;
        }
    }
    return fp;
}
搜索更多相关主题的帖子: 英文字母 include 词典 
2015-01-10 22:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
现在多了个“等待验证会员”?

授人以渔,不授人以鱼。
2015-01-11 20:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

int main( void )
{
    FILE *fp1 = fopen( "8-1-dict1.txt", "r" );
    FILE *fp2 = fopen( "8-1-dict2.txt", "r" );
    FILE *fp3 = fopen( "8-1-dict3.txt", "w" );

    char buf1[100]="", *line1=buf1;
    char buf2[100]="", *line2=buf2;

    while( line1 || line2 )
    {
        if( line1 && *line1=='\0' )
            line1 = fgets( line1, 100, fp1 );
        if( line2 && *line2=='\0' )
            line2 = fgets( line2, 100, fp2 );

        if( line1 && line2 )
        {
            int cp = strcmp( line1, line2 );
            if( cp < 0 )
                fputs(line1,fp3), *line1='\0';
            else if( cp > 0 )
                fputs(line2,fp3), *line2='\0';
            else
                fputs(line1,fp3), *line1='\0', *line2='\0';
        }
        else if( line1 )
        {
            fputs(line1,fp3), *line1='\0';
        }
        else if( line2 )
        {
            fputs(line2,fp3), *line2='\0';
        }
    }

    fclose( fp3 );
    fclose( fp2 );
    fclose( fp1 );
    return 0;
}
2015-01-12 08:55
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
得分:0 
fputs(line1, fp3), *line1 = '\0', *line2 = '\0';

这种代码风格看得我一愣一愣的

Only the Code Tells the Truth             K.I.S.S
2015-01-12 09:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-440952-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070292 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved