用C语言写一个查单词的小demo

用C语言写一个查单词的小demo

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, const char *argv[])
{
          
   
	// 用只读的方式打开我们的单词库
    FILE *fp = fopen("dict.txt","r");
    if (NULL == fp){
          
   
        perror("fopen");
        return -1;
    }
    while (1){
          
   
    	// 定义两个缓冲区,用来接收数据 (用来存放用户查询的数据,和在单词库中读到的数据)
        char buf1[100];
        char buf2[100];
       	// 将指针定位到文件开头
        fseek(fp,0,SEEK_SET);
        // 清空缓存区
        memset(buf1,0,sizeof(buf1));
        printf("请输入单词(quit退出):");
        // fgets(buf1,sizeof(buf1),stdin);
        scanf("%s",buf1);
        // 如果用户输入为quit,则退出
        if (strcmp(buf1,"quit")==0)
            return -1;
		// 记录用户输入的长度
        int len = strlen(buf1);
        while(1){
          
   
        	// 清空缓存区
            memset(buf2,0,sizeof(buf2));
            // 从单词库中读数据
            char *p = fgets(buf2,sizeof(buf2),fp);
           //  printf("buf2 = %s
",buf2);
            if (NULL == p){
          
   
                perror("fgets");
                printf("%s:not find
",buf1);
                break;
            }
            // 将用户输入的数据和读取到的数据做比较
            char * flag = strstr(buf2,buf1);
            // printf("------------------
");
            // printf("buf1[0] = %c
",buf1[0]);
            // printf("buf2[0] = buf1[0]=%d
",buf2[0]==buf1[0]);
            // printf("flag = %d
",flag);
            // strstr返回值不为空,并且返回的地址和buf2的地址一样并且 buf1的长度为len,则buf2[len] ==  ;
            if (flag != NULL && flag == buf2 && (buf2[len] ==  ))
            {
          
   
                printf("%s",buf2);
                break;
            }
        }
  
    }
		// 关闭文件
        fclose(fp);
        return 0;
}

下面为一个小型的单词库

经验分享 程序员 微信小程序 职场和发展