当前位置: 首页 > news >正文

字典查找对应输入的字符

一、将文件放入到数据库

#include<stdio.h>
#include<sqlite3.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
int main(int agrc,char *agrv[])
{FILE *fp;fp= fopen("./dict.txt","r");if(fp == NULL){perror("fopen fail");return -1;}char buf[1024] = {0};sqlite3 *pdb;int ret = sqlite3_open("./stu.db",&pdb);if(ret != SQLITE_OK){fprintf(stderr,"sqlite3_open fail : %s\n",sqlite3_errmsg(pdb));return -1;}char *sql = "create table if not exists class6(id INTEGER PRIMARY KEY AUTOINCREMENT,word TEXT,meaning TEXT);";ret = sqlite3_exec(pdb,sql,NULL,NULL,NULL);if(ret != SQLITE_OK){fprintf(stderr,"sqlite3_open1 fail: %s\n",sqlite3_errmsg(pdb));sqlite3_close(pdb);return -1;}while(!feof(fp)){char *buf1[2];char buf2[1024] = {0};memset(buf,0,sizeof(buf));fgets(buf,sizeof(buf),fp);buf1[0] = strtok(buf," ");buf1[1]  = strtok(NULL,"\r");sprintf(buf2,"insert into class6 values(NULL,\"%s\",\"%s\")",buf1[0],buf1[1]);sql = buf2;ret = sqlite3_exec(pdb,sql,NULL,NULL,NULL);if(ret !=SQLITE_OK){fprintf(stderr,"sqlite3_open2 fail : %s\n",sqlite3_errmsg(pdb));sqlite3_close(pdb);return -1;}}
sqlite3_close(pdb);
fclose(fp);
return 0;
}
二、查找数据库
#include<stdio.h>
#include<sqlite3.h>
#include<string.h>
char buf[100] = {0};
int callback(void *arg,int column_cnt,char **column_value,char **column_name)
{if(strcmp(column_value[0],buf) == 0){printf("meaning = %s\n",column_value[1]);}return 0;
}
int main(int agrc,char *agrv[])
{sqlite3 *pdb;:int ret = sqlite3_open("./stu.db",&pdb);if(ret != SQLITE_OK){fprintf(stderr,"sqlite3_open fail : %s\n",sqlite3_errmsg(pdb));return -1;}char *sql = "select word,meaning from class6;";fgets(buf,sizeof(buf),stdin);buf[strlen(buf) + 1] = '\0';ret = sqlite3_exec(pdb,sql,callback,NULL,NULL);if(ret != SQLITE_OK){fprintf(stderr,"sqlite3_open1 fail: %s\n",sqlite3_errmsg(pdb));sqlite3_close(pdb);return -1;}sqlite3_close(pdb);return 0;
}
三、用到的函数
3.1、fgets()

fgets函数函数用来从stream所指文件中读入buf[size-1]个字符放入buf为起始地址的空间内;如果在未读满bufsize-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。并在结尾处加上“\0”组成一个字符串,存入“字符串指针”中。若函数调用成功,则返回存放字符串的首地址;若读到文件结尾处或调用失败时,则返回字符常量 NULL。或者已经读到size -1,这个时候注意,我们如果要读文件,读这个数据的时候,若已经放满了,则没有\0,会造出读的时候指针越界,因此在只读[sizeof - 1]。当他把一行读完,文件流指针,会自动指向下一个。

3.2、feof()

int feof(FILE *stream);

功能

检测流上的文件结束符

返回值

如果文件结束,则返回非0值,否则返回0,文件结束符只能被clearerr()清除

3.3、ferror()

int ferror(FILE *stream);

ferror(src)检查文件到底是否出错,注意,发生读的错误

文件流里面有flag 表示文件是否从错误

 四、查找过程中出现的错误

1、strlen()之后,得到的是有效字符的个数,那么如果我们想对\n去掉的话,那么必须是长度-1,因为我们数组是从0开始的。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • linux每个memory cgroup的lru链表是什么创建的
  • 11.舵机控制
  • 【Linux】CodeServer:云IDE部署
  • word并排查看,同步滚动
  • springboot定时任务@scheduled自定义配置定时开关
  • 软考高项彻底没用了?谁说的?站出来,我保证不笑场!
  • 微知-nandflash和norflash名字为什么叫nand和nor?主要区别是什么?
  • Java Script网页设计案例
  • MySQL大量数据偏移查询优化:从LIMIT偏移到基于ID的数据读取
  • JavaEE 第16节 线程安全的集合类
  • 华为设备默认密码
  • 【人工智能】多模态AI:如何通过融合文本、图像与音频重塑智能系统未来
  • 【数仓建模过程】Spark数据清洗篇
  • 深入理解DPO(Direct Preference Optimization)算法
  • erlang学习:用OTP构建系统1
  • eclipse(luna)创建web工程
  • java取消线程实例
  • python学习笔记-类对象的信息
  • Redis 中的布隆过滤器
  • vue学习系列(二)vue-cli
  • yii2权限控制rbac之rule详细讲解
  • 计算机在识别图像时“看到”了什么?
  • 写给高年级小学生看的《Bash 指南》
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 主流的CSS水平和垂直居中技术大全
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (ros//EnvironmentVariables)ros环境变量
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (三)mysql_MYSQL(三)
  • (四)React组件、useState、组件样式
  • (四)stm32之通信协议
  • (四)汇编语言——简单程序
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (五)c52学习之旅-静态数码管
  • (一)80c52学习之旅-起始篇
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转载)从 Java 代码到 Java 堆
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • (状压dp)uva 10817 Headmaster's Headache
  • .cfg\.dat\.mak(持续补充)
  • .NET C# 使用GDAL读取FileGDB要素类
  • .NET Core WebAPI中封装Swagger配置
  • .Net 代码性能 - (1)
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • ?.的用法