文件IO实现简单的词典

文件IO实现简单的词典

有兴趣的可以跟着实现一下

单词表文件
链接:https://pan.baidu.com/s/1xDGpKHLL1QQ6v__vFNmnGg 
提取码:wcmr

1.思路

词典:

sharpen   v.削尖,磨快
sharpener   n.铅笔刀,磨石
sharply   adv.尖锐地,敏锐地
shatter   v.粉碎,毁坏
shave   v.剃,修脸
she   pron.她
shear   v.剪毛,切割
shed   v.流下 n.棚子
sheep   n.绵羊

输入单词跟词典比较,相同输出其释义.根据单词空格,分开查询单词,当输入单词跟词典中单词相同,输出词典中一行数据。

2.打开文件

	fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调不同的内核api,返回的是一个指向文件结构的指针。
FILE* open fopen("dict.txt","w");
FILE *fopen(const char *pathname, const char *mode);
参数1:
    文件路径
参数2:
    打开文件权限

3.读取文件

fgets从指定流stream读取一个字符串存储到s指向的内存空间
char *fgets(char *s, int size, FILE *stream);
参数:
    char *s:
	是一个指向char类型的指针,即s可以是一个字符指针变量名,也可以是一个字符数组名;
int size:
	是读取的最大字符数(包括最后的空字符’\0’),类型为int型;把size设置为s指向内存空间的字节数,可防止内存访问越界;
FILE *stream:
	是一个指向FILE类型结构的指针;stream指定了fgets()函数要读取的流,可以是文件流,也可以是标准输入流;当是文件流时,stream等于fopen()函数的返回值;当是标准输入流时,stream等于stdin

4.源码

#include <stdio.h>
int toChinese(){
    //1.打开单词文件
    FILE*open=fopen("dict.txt","r");
    if(open==0){
        perror("open");
        return-1;
    }
    //2.根据输入的单词对比词典单词
    //输入单词
    char word[20];
    //词典单词
    char dict[1024];
    printf("请输入要查询的单词\n");
    scanf("%s",word);
    char *p,*q;
    //从open中读取数据,每次读一行
    while(fgets(dict,sizeof(dict),open)!=NULL){
        //使用指针比较两个字符串数组的值
        p=word;
        q=dict;
        //当单词表当前行不为空就一直比较
        while(*q !=' '){
            //拿单词表跟输入单词比较
            if(*q != *p)
                //printf("==");
                break;
                //指针往后移继续比较
                q++;
                p++;
            }
            //判断word是否读完,每行单词是否读完
            if(*q==' ' && *p=='\0'){
                printf("结果为:%s",dict);
                return 0;
            }
    }
    printf("查无此单词\n");
}

void openDict(){
flag_1:
    printf("=========新华词典================\n");
    printf("欢迎使用盗版词典\n");
    printf("按键指南:\n");
    printf("输入(1)英译汉\n");
    printf("输入(2)退出词典\n");

    int ch;
    scanf("%d",&ch);
    //去掉回车
    while(getchar()!='\n');
    switch (ch){
        case 1:
            toChinese();
            break;
        case 2:
            break;
        default:
            printf("暂不支持别的语种\n");
            goto flag_1;
    }
}
int main(int argc, char *argv[])
{
    openDict();
    return 0;
} 

5.效果

=========新华词典================
欢迎使用盗版词典
按键指南:
输入(1)英译汉
输入(2)退出词典
1
请输入要查询的单词
apple
结果为:apple   n.苹果

6.TIPS

注意使用fgets函数会读取一行数据,也会读取换行,所以当我们打印词典数据时不需要换行
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值