用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;
}
下面为一个小型的单词库