【网络编程】学习成果day7:用sqlite3和fgetc将字典写入数据库中的数据表。

news/2025/3/5 10:10:37/

1.将字典写入数据库中的数据表
代码:

linux@linux:~/study/NETbc$ cat 03_dictsqlite3.c 
#include<myhead.h>
#define MAX 50int do_insert(sqlite3* db);int main(int argc, const char *argv[])
{//打开数据库sqlite3 *db=NULL;if(sqlite3_open("./dict.db",&db)!=SQLITE_OK){fprintf(stderr,"sqlite3_open:%s %d __%d__\n",\sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);return -1;}//创建表格char sql[128]="create table if not exists stu (word char,mean char);";char* errmsg=NULL;if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK){fprintf(stderr,"sqlite3_exec:%s __%d__\n",errmsg,__LINE__);return -1;}printf("create table stu success\n");//调用插入数据函数,创建数据表并将英文字典文本文件的单词和意思导入的数据表中do_insert(db);//关闭数据库if(sqlite3_close(db) != SQLITE_OK){fprintf(stderr,"sqlite3_close:%s %d __%d__\n",\sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);return -1;}printf("sqlite3_close success\n");return 0;
}//插入数据
int do_insert(sqlite3* db)
{//打开文件操作FILE *fp;fp=fopen("dict.txt","r");char word[MAX]="";char mean[MAX]="";int flag=0; 		//标志位,用来区别记录单词(0)还是意思(1)int a; 				//接受fgetc的返回值,必须用int才能取到EFO,直接用char接收会产生段错误。char ch;   			//记录单个字符while((a=fgetc(fp))!=EOF){ch=a;if(ch=='\n'){//写入数据库操作char sql[128]="";if(snprintf(sql,sizeof(sql),"insert into stu values (\"%s\",\"%s\");",\word,mean) < 0){fprintf(stderr,"snprintf error:__%d__\n",__LINE__);return -1;}char * errmsg=NULL;if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK){fprintf(stderr,"sqlite3_exec:%s __%d__\n",errmsg,__LINE__);return -1;}bzero(word,sizeof(word)); 	//给字符串清零bzero(mean,sizeof(mean));flag=0;continue;}else{if(ch==' ') 		//此文件中,当一行中有一个空格时,就开始收集mean字符串{flag=1;}else if(flag==0){int len=strlen(word);word[len]=ch; 			//把字符加入字符串中word[len+1]='\0'; 		//字符串以'\0'结尾}else{int len=strlen(mean);mean[len]=ch; 			//把字符加入字符串中word[len+1]='\0'; 		//字符串以'\0'结尾}}}return 0;}

运行结果:

linux@linux:~/study/NETbc$ gcc 03_dictsqlite3.c -lsqlite3
linux@linux:~/study/NETbc$ ./a.out 
create table stu success
sqlite3_close success
linux@linux:~/study/NETbc$ sqlitebrowser dict.db

运行结果


http://www.ppmy.cn/news/1100729.html

相关文章

robot framework入门案例

Robot Framework是一个完全基于关键字测试驱动的框架&#xff1b; 关键字可以理解为一个能实现特定功能的对象&#xff08;如ssh连接、登录、新增配置等&#xff09; 有了关键字后&#xff0c;就可以通过关键字组合成案例&#xff1b; 所以入门案例只需要两个文件 &#xf…

linux安装edge时出现dpkg依赖问题

安装包下载地址 微软Edge(deb) 微软Edge(rpm) 安装包下载完成后执行dpkg命令安装时出现dpkg依赖问题 sudo dpkg -i microsoft-edge-stable.* /* 执行后提示&#xff1a; dpkg: 依赖关系问题使得 microsoft-edge-stable 的配置工作不能继续&#xff1a; microsoft-edge-stable…

el-dialog弹窗中进度条的(mqtt提供)数据无法清空(清空方法)

清空方法 this.$nextTick(()>{this.$refs.devicefromDialog.clearValidate(airSwitchNo);//清除的校验规则prop传的值this.$refs[devicefromDialog].resetFields();//清除表单内容}) 场景&#xff1a;进度条的数据需要在关闭的时候&#xff0c;清空上一次的缓存记录&#xf…

SQL-DCL

DCL-管理用户 1.查询用户 USE mysql&#xff1b; SELECT * FROM user&#xff1b; 2.创建用户 CREATE USER “用户名”“主机名” IDENTIFIED BY "密码“&#xff1b; 3.修改用户密码 ALTER USER “用户名”“主机名” IDENTIFIED WITH mysql_native_password BY &quo…

Linux系统--基础IO

文章目录 文件的概念 C语言文件IO相关操作 系统调用接口 文件描述符 文件周边概念 设计用户层缓冲区 minishell中支持重定向 文件系统 软硬链接 动静态库 一、文件的概念 1.在系统角度上来说 文件内容属性 如果在磁盘上建立一个为0KB的文件&#xff0c;磁盘上也会存储文件的…

PEFT学习:使用LORA进行LLM微调

使用LORA进行LLM微调 PEFT安装LORA使用&#xff1a; PEFT安装 由于LORA,AdaLORA都集成在PEFT上了&#xff0c;所以在使用的时候安装PEFT是必备项 方法一&#xff1a;PyPI To install &#x1f917; PEFT from PyPI: pip install peft方法二&#xff1a;Source New features…

Java面向对象学习笔记-1

前言 Java是一门面向对象的编程语言,通过类和对象的概念可以对现实事物进行抽象和封装。本文将带领大家逐步理解Java面向对象编程的关键要点,并通过示例代码加深理解。学完本文,你将能够熟练使用Java类和对象表示现实世界中的概念,为后续的Java学习奠定坚实基础。 类和对象 …

[构建 Vue 组件库] 小尾巴 UI 组件库 —— 横向商品卡片(仿淘宝)

文章归档于&#xff1a;https://www.yuque.com/u27599042/row3c6 组件库地址 npm&#xff1a;https://www.npmjs.com/package/xwb-ui?activeTabreadmegitee&#xff1a;https://gitee.com/tongchaowei/xwb-ui 下载 npm i xwb-ui配置 按需导入 import {组件名 } from xwb-…