用c语言做一个词典
来源:互联网 发布:天翼合伙人软件 编辑:程序博客网 时间:2024/06/08 17:39
这是一个简单的实现了英文单词查询的词典,把词库放在VS的工程目录下(放在别的地方也可以,打开的时候改一下路径就好了)
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<Windows.h>//以后更换词库直接更改这里即可//#define FILE_NAME dictionary.txt//之所以将单词数定义为宏常量是为了以后更改方便#define SUM 8000//定义一个结构体用来存放每条单词的信息typedef struct { char english[25]; char chinese[50]; char my_class[20];}words;//这里定义一个结构体数组是为了将硬盘中的词库加载到内存上,提高查找速度words library[SUM] = { 0 };int number = 0;int binary_find(const char *English){ int low = 0; int high = SUM - 1; int mid = 0; while (low <= high) { mid = low + ((high - low) >> 1); if (strcmp(English, library[mid].english) < 0) { high = mid - 1; } else if (strcmp(English, library[mid].english) > 0) { low = mid + 1; } else if (strcmp(English, library[mid].english) == 0) { return mid; } /*else return -1; //假如把return -1放在这里,就会返回一个最接近匹配单词的单词,所以会避开匹配失败这种情况 */ } return -1;}void find_print(char *English){ int key = -1; key = binary_find(English); if (key == -1) { printf("%s not found!\n", English); } else { printf("%s %s %s\n", library[key].english, library[key].chinese, library[key].my_class); }}void print_menu(void){printf("\n*************************************************\n");printf("**** 这是一个简易但是有用的词典 *****\n");printf("***** -> 你有以下两个选择: <- *******\n");printf("******* 1> 查询单词 *********\n");printf("******** 2> 退出程序 ***********\n");printf("*************************************************\n");}int main(void){ char English[25] = { 0 }; FILE *fp = fopen("dictionary.txt", "r");//很好奇为什么这里用宏替换文件名就会打开失败--> fopen("FILE_NAME","r") int choice = 0; if (fp == NULL) { perror("file"); exit(1); } while (!feof(fp)){ fscanf(fp, "%s%s%s", library[number].english, library[number].chinese, library[number].my_class); number++; } while (1) { system("cls"); print_menu(); printf("\n输入你的选择:>"); scanf("%d", &choice); fflush(stdin); if (2 == choice) { exit(1); } else { printf("请输入你要查询的单词:>"); scanf("%s", English); fflush(stdin); find_print(English); system("pause"); //printf("请输入你要查询的单词:>"); //scanf("%s", English); //fflush(stdin); //find_print(English); } fclose(fp); } return 0;}
实现这个词典的方法是TDD
PS:请广大网友转载请指明出处
阅读全文
0 0
- 用c语言做一个词典
- 用C语言字典实现词典功能 C语言字典词典
- 用C语言做的一个简单的通讯录
- 关于今天做的一个翻译词典
- 用C语言(keil c)给8051单片机编程来做一个LCD计算器(proteus仿真)
- 用lucene做一个站内搜索引擎(一):用ictclas4j做Lucene系统的分词器:(1)提高词典加载速度.
- 做了一个不错的词典,分享一下
- 做了一个不错的词典,分享一下
- 用C语言给8086编程来做一个计算器(proteus仿真)
- 突然有了一个做c语言脚本引擎的想法
- 做一个简单的解释器----小话c语言
- 用C语言做FLASH进度条
- 自己用c语言做的日历
- (五)linux下c语言实现在线词典
- OpenJudge百炼-2804-词典-C语言-二分查找
- 用c语言做的简易的动态显示直方图和一个有趣的反直觉财富分配实验
- 从今天开始学习C语言,力求做一个最棒的Linux C开发人员
- C语言做渐变动画
- DELPHI XE 10.2.1 FMX平台 在图片上写字方法
- 提取中文句子主谓宾的Java实现
- 想要认真写博客的第一天
- java和js中JSONObject,JSONArray,Map,String之间转换
- el表达式和ognl表达式访问带点的name属性
- 用c语言做一个词典
- 小项目——大数据处理
- SQL小bug
- Wireshark基本介绍和学习TCP三次握手
- 运行Maven项目时出现invalid LOC header (bad signature)错误,Tomcat不能正常启动
- 2017/12/6
- UGUI实现不规则区域点击响应
- 虚幻4打开游戏开场动画设置相关问题
- 【深度学习】caffe 中的一些参数介绍