失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C语言(文件与IO)---- 实现电子英语词典

C语言(文件与IO)---- 实现电子英语词典

时间:2021-08-02 13:39:39

相关推荐

C语言(文件与IO)---- 实现电子英语词典

C语言(文件与IO)---- 实现电子英语词典

所需要的词典文本文件

链接 :/s/1lVweza25PmrcRV-wYeHdwQ

提取码:0cop

将词典文本文件放在代码同个文件夹下

整体的设计流程图

实现代码

dictionary.h

#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXLEN 2048typedef struct Node{char *wd;char *tran;struct Node *next;}Node;//把字典加载进入内存Node *loadDictionary() {Node *head = NULL;char buff[MAXLEN];FILE *file = fopen("./dictionary.txt", "r");if (!file) {perror("file open fault");exit(1); }while (fgets(buff, MAXLEN, file)) {Node *wdNode = (Node *) malloc(sizeof(Node)); wdNode->wd = (char *)malloc(sizeof(char) * strlen(buff));strcpy(wdNode->wd, buff + 1);wdNode->wd[strlen(wdNode->wd) - 1] = 0;fgets(buff, MAXLEN, file);wdNode->tran = (char *)malloc(sizeof(char) * strlen(buff));strcpy(wdNode->tran, buff + 6);wdNode->tran[strlen(wdNode->tran) - 1] = 0;wdNode->next = head;head = wdNode; }fclose(file);return head;}//用于对单词解释进行切分为多行void splitWord(const char *trans) {char *buff = (char *) malloc(sizeof(char *) * (strlen(trans) + 1));strcpy(buff, trans);int cnt = 1;char *token = strtok(buff, "@");printf("1. %s\n", buff);while (token = strtok(NULL, "@")) {printf("%d. %s\n", ++cnt, token); }free(buff);return ;}//启动字典进行查询Node *findNode(Node *head, char *word) {while (head && strcmp(word, head->wd)) {head = head->next; }return head;}void findWord(Node *head) {char word[MAXLEN];while (1) {printf("Please input a word:");scanf("%s", word);if (!strcmp(word, "q!")) {printf("bye~~ ⊙_⊙\n");break;} Node *fd = findNode(head, word);if (fd) {printf("%s\n", word);splitWord(fd->tran); } else {printf("%s not find~~>_<~~ \n", word); }}return ;}//释放使用的内存,关闭字典void freeDictionary(Node *head) {Node *k = head;while (k) {head = k->next;free(k->wd);free(k->tran);k = head; }free(head);free(k);printf("退出字典, T^T\n");return ;}

dictionary.c

#include "dictionary.h"//启动字典进行查询int main() {Node *head = loadDictionary();//加载词典findWord(head);//查询单词freeDictionary(head); // 释放资源return 0;}

运行

虽然简单,但很好的练习了IO的部分知识哦,哈哈哈

如果觉得《C语言(文件与IO)---- 实现电子英语词典》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。