需求:
创建一个sqlite3数据库,并将dict.txt中的四级词汇按照【英文】 【中文】的格式输入创建的数据库中
代码实现过程:
#include<stdio.h>
#include <sqlite3.h>
#include <string.h>
#include <stdlib.h>
#define MSG_ERR(msg){\
fprintf(stderr,"line : %d\n",__LINE__);\
perror("msg");\
}
int do_insert(sqlite3* db,char *Eng,char* Chi);
int main(int argc, const char *argv[])
{
system("rm dict.db");
FILE *fp = fopen("dict.txt","r");
if(fp == NULL){
MSG_ERR(open);
return -1;
}
sqlite3* db;
if(sqlite3_open("./dict.db",&db) != SQLITE_OK){
fprintf(stderr,"line : %d sqlite3_open failed:%d:%s\n",__LINE__,sqlite3_errcode(db),sqlite3_errmsg(db));
return -1;
}
printf("sqlite3_open success\n");
char sql[128] = "create table if not exists dict (Eng char,Chi char);";
char* errmsg = NULL;
//printf("sql = %s\n",sql);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK){
fprintf(stderr,"[line : %d] : sqlite3_exec failed : %s\n",__LINE__,errmsg);
return -1;
}
/* strcpy(sql,".header on");
printf("sql = %s\n",sql);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK){
fprintf(stderr,"[line : %d] : sqlite3_exec failed : %s\n",__LINE__,errmsg);
return -1;
}*/
char buf[256] = "";
char Eng[128] = "";
char Chi[128] = "";
int res = 0;
int j = 0;
while(fgets(buf,sizeof(buf),fp) != NULL){
buf[strlen(buf)-1] = 0;
//printf("buf = %s\n",buf);
for(int i=0;buf[i+2] != '\0';i++){
if(buf[i] != ' ' && buf[i+1] == ' ' && buf[i+2] == ' '){
strncpy(Eng,buf,i+1);
}
else if(buf[i] == ' ' && buf[i+1] == ' ' && buf[i+2] != ' '){
strcpy(Chi,buf+i+2);
break;
}
}
printf("[%d] Eng = %s , Chi = %s\n",j++,Eng,Chi);
do_insert(db,Eng,Chi);
bzero(buf,sizeof(buf));
bzero(Eng,sizeof(Eng));
bzero(Chi,sizeof(Chi));
}
return 0;
}
int do_insert(sqlite3* db,char *Eng,char* Chi){
char sql[128] = "";
char* errmsg = NULL;
sprintf(sql,"insert into dict values (\"%s\",\"%s\");",Eng,Chi);
// printf("sql = %s\n",sql);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK){
fprintf(stderr,"[line : %d] : sqlite3_exec failed : %s\n",__LINE__,errmsg);
return -1;
}
printf("添加成功\n");
}
代码实现结果:
[4354]传媒: