1. 将dict.txt的内容导入到数据库中
代码示例
#include <stdio.h>
#include <sqlite3.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
void do_insert(sqlite3* db);
int main(int argc, const char *argv[])
{
sqlite3* db = NULL;
if(sqlite3_open("./dict.db",&db) != SQLITE_OK)
{
printf("err_code:%d\n",sqlite3_errcode(db));
printf("errmsg:%s\n",sqlite3_errmsg(db));
fprintf(stderr,"__%d__sqlite3_open failed\n",__LINE__);
return -1;
}
printf("sqlite3_open success\n");
char *sql = "create table if not exists dict (English char ,Chinese char)";
char *errmsg = NULL;
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
{
fprintf(stderr,"__%d__sqlite3_exec:%s\n",__LINE__,errmsg);
return -1;
}
printf("create table success\n");
do_insert(db);
return 0;
}
void do_insert(sqlite3* db)
{
char sql[128]="";
char *errmsg = NULL;
int fd = open("./dict.txt",O_RDONLY);
if(fd < 0)
{
perror("open");
return;
}
char English[128] = "";
char Chinese[128] = "";
char temp[1];
ssize_t res = 0;
int flag = 0;
while(1)
{
res = read(fd,temp,1);
if(res < 0 )
{
perror("read");
return;
}
if(res == 0)
break;
if(flag == 0)
{
if(strcmp(temp," ") != 0)
{
strcat(English,temp);
}
else
{
flag = 1;
read(fd,temp,1);
if(strcmp(temp," ")!=0)
{
strcat(English," ");
strcat(English,temp);
flag = 0;
}
}
}
if(flag == 1)
{
if(strcmp(temp," ")==0)
continue;
else if(strcmp(temp,"\n") != 0)
{
strcat(Chinese,temp);
}
else if(strcmp(temp,"\n") == 0)
{
sprintf(sql,"insert into dict (English,Chinese) values (\"%s\",'%s')",English,Chinese);
sqlite3_exec(db,sql,NULL,NULL,&errmsg);
bzero(Chinese,sizeof(Chinese));
bzero(English,sizeof(English));
bzero(sql,sizeof(sql));
flag = 0;
}
}
}
printf("insert success\n");
}
测试结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/f754b7e229d04fb190f4274d228f310f.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/d1710f9fb0e64537b73070b643784c83.png)