| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 849 人关注过本帖
标题:怎样编写比较两本词典的 C 程序
只看楼主 加入收藏
月光小子
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2014-7-21
结帖率:50%
收藏
已结贴  问题点数:5 回复次数:10 
怎样编写比较两本词典的 C 程序
我要比较两本词典,比如说A词典和B词典,现在要把A词典和B词典进行比较,把B词典中没有的词条从A词典中复制进来,怎么写程序啊,求各位指教,最好给个程序参考,谢谢。(例:###代表的是词条)
A词典:
###'d
contr.  = had, would, I'd, he'd
###'em
[əm]
pron.  他们,它们(作宾语)
###'ll
v.  与人称代词构成缩约动词,例如
I'll, he'll, that'll

###'m
v.  = am  (只用于I'm)
###'re
abbr.  are: we're, they're
###'s
abbr.
1.  = has: he's done it
2.  = is: it's time
3.  = us: let's go
###'struth
[struːθ]
int.  (表示惊奇)哎呀 (亦作: 'strewth)
###'twas
[twɔz, twəz]
contr.  = it was
###'tween
[twiːn]
prep.  在…之间
###'twere
[twɜː(r), twə(r)]
contr.  = it were
###'twill
contr.  = it will
###'twixt

B词典

###a_good_deal_of
a_good_deal_of
许多;很多
###a_great_many
a_great_many
很多
###a_host_of
a_host_of
许多;大量
###a_little
a_little
有些;少许
###a_multitude_of
a_multitude_of
许多
###a_number_of
a_number_of
若干的
###a_round_of
a_round_of
一番;一连串
搜索更多相关主题的帖子: 词典 最好 
2014-08-25 11:20
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:1 
你不会就这样求作业吧,最好能自己能写多少写多少,遇到不能解决的问题放上来,大家帮助你,这样有利于你的学习成长!

我不是砖家,要努力成为砖家。
2014-08-25 16:45
月光小子
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2014-7-21
收藏
得分:0 
回复 2 楼 砖家的谎言
不是的,因为刚接触C语言没多久,对其中的很多函数的用法不怎么了解,所以问题比较多。这是在VC++6.0平台,我用fread函数读取一个6M的txt文本,可是总是读取都失败,空间我也开辟够了,可是不知道为什么会失败,想请教一下原因,还有就是怎么把一字符串复制到文本的末尾去啊
2014-08-25 18:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
你还没有这个能力,先搁着吧,除非你有用别的语言实现过同样功能的经验。

授人以渔,不授人以鱼。
2014-08-26 03:02
月光小子
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2014-7-21
收藏
得分:0 
下面是我写的一段程序,功能就是比较两本词典的,并把B词典中没有的词条从A中拷贝过来,可是有一点问题,请各位前辈帮我看看
#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <malloc.h>
#include <windows.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <process.h>


#define  filename_1 "2.txt"
#define  filename_2 "3.txt"

int main()
{
   FILE *fp1;
   FILE *fp2;

   struct stat statbuf,statbuf1;
   char *p1,*p2;

   char  buf1[1024]={0},buf3[1024]={0};
   char  *buf2=NULL,*buf4=NULL;  
   char  buf5[1024]={0},buf6[1024]={0};
   
   char *blank = " ";
   stat(filename_1,&statbuf);
   stat(filename_1,&statbuf1);
    printf("filename_1 size:%ld\n filename_2 size:%ld\n",statbuf.st_size,statbuf1.st_size);
 
    if ((fp1 = fopen(filename_1, "r")) == NULL)
    {
      fprintf(stderr, "Cannot open output filename_1.\n");
      return 1;
    }
   
    if ((fp2 = fopen(filename_2, "rw")) == NULL)
    {
      fprintf(stderr, "Cannot open output filename_2.\n");
      return 1;
    }
        
    buf2=(char*)malloc(statbuf.st_size+1);
    buf4=(char*)malloc(statbuf1.st_size+1);

    if (buf2 == NULL || buf4 == NULL)
    {
      printf("Not enough memory to allocate buffer\n");
      exit(1);  /* terminate program if out of memory */
    }

    while((p1=fgets(buf2,statbuf.st_size,fp1)))///开始读取
    {      

      if(*p1=='#')
      {         
          strcpy(buf1,buf2);
          printf("buf1:%s\n",buf1);                  
          memset(buf3, 0, strlen(buf2));
          strcat(buf3,buf1);
      }
      else
      {
                 
            strcat(buf3,blank);
            strcat(buf3,buf2);
            printf("buf3:%s\n",buf3);
        //    memset(buf1, 0, strlen(buf2));
      }
        
       while((p2=fgets(buf4,statbuf1.st_size,fp2)))
       {
          if(*p2=='#')
          {         
            strcpy(buf5,buf4);
           
            if(strcmp(buf1,buf5)==0)
             {
                break;
             }
             if(*p2==NULL)
             {
                fwrite(buf3,strlen(buf3),1,fp2);    //    想写到文件末尾,这里不知道怎么搞     
                memset(buf3, 0, strlen(buf2));
             }
            printf("buf5:%s\n",buf5);   
            memset(buf5, 0, strlen(buf4));            
          }
          memset(buf4, 0, statbuf1.st_size);            
       }
    memset(buf2, 0, statbuf.st_size);
    }

   fclose(fp1);
   free(buf2);
   fclose(fp2);
   free(buf4);

   return 0;
}
2014-08-26 09:17
乾坤洞主
Rank: 3Rank: 3
来 自:乾坤洞
等 级:论坛游侠
帖 子:93
专家分:103
注 册:2012-7-18
收藏
得分:1 
回复 4 楼 TonyDeng
按字母顺序排列的两本词典还好点,乱序怎么办?先排序再查找?

和尚我爱四处游,疯疯癫癫有理由    
开开心心是正道,愁愁烦烦不应该
2014-08-26 12:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用乾坤洞主在2014-8-26 12:05:04的发言:

按字母顺序排列的两本词典还好点,乱序怎么办?先排序再查找?


当然要先排序,但对外部文件来说,应用外排序(建立索引文件),普通的内排序算法是没用的,除非你只处理微小数据量的文件。

授人以渔,不授人以鱼。
2014-08-26 20:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
针对独特的问题,有一些小技巧可以用,不过针对性太强,其实没什么用的。写程序不应着眼于个别问题,必须看整体,个别解决方案再“优秀”,放到全局环境下,却可能是障碍。我一向反对就题做题,也是这个原因。

授人以渔,不授人以鱼。
2014-08-26 22:51
月光小子
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2014-7-21
收藏
得分:0 
回复 6 楼 乾坤洞主
我只要把不同的词条写到文件的末尾就好,不需要排序
2014-08-27 11:40
月光小子
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2014-7-21
收藏
得分:0 
回复 2 楼 砖家的谎言
你好,想请教一下Unicode编码的文本,我在VC++6.0上进行操作时,怎么样才能让他保持Unicode编码的呢?
2014-08-27 16:21
快速回复:怎样编写比较两本词典的 C 程序
数据加载中...
 
   



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

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