提示:
打开dict.txt,循环读取每一行。
将每一行的单词和意思分离,分别存储到字符串中
组sql语句,将单词和意思插入到数据库中。
#include <stdio.h>
#include <sqlite3.h>
#include <strings.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
//打开一个数据库
sqlite3 * db = NULL;
if(sqlite3_open("./my.db",&db) != SQLITE_OK){
fprintf(stderr,"line:%d sqlite3_open: %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 (word char,mean char);";
char *errmsg = NULL;
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK){
fprintf(stderr,"line:%d sqlite3_exec: %s\n",__LINE__,errmsg);
return -1;
}
printf("create table dict success\n");
//打开文件
FILE *fd = fopen("./dict.txt","r");
//文件打开失败
if(NULL == fd){
perror("fopen");
return -1;
}
printf("open success\n");
char buf[128];
char word[128];
char mean[128];
//循环读取每一行内容
while(1){
bzero(buf,sizeof(buf));
bzero(word,sizeof(word));
bzero(mean,sizeof(mean));
if(fgets(buf,sizeof(buf),fd) == NULL){
printf("读取完毕\n");
return -1;
}
buf[strlen(buf)-1] = '\0';
for(int i = 0;i<buf[i+2];i++){
if(buf[i] != ' ' && buf[i+1] == ' ' && buf[i+2] == ' '){
strncpy(word,buf,i+1);
}
else if(buf[i] == ' ' && buf[i+1] == ' ' && buf[i+2] != ' '){
strcpy(mean,buf+i+2);
break;
}
}
bzero(sql,sizeof(sql));
sprintf(sql,"insert into dict values(\"%s\",\"%s\");",word,mean);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK){
fprintf(stderr,"line:%d sqlite3_exec: %s\n",__LINE__,errmsg);
return -1;
}
}
//关闭数据库
if(sqlite3_close(db) != SQLITE_OK)
{
fprintf(stderr, "line:%d sqlite3_close: %d : %s\n", \
__LINE__, sqlite3_errcode(db), sqlite3_errmsg(db));
return -1;
}
printf("sqlite3_close success\n");
//关闭文件描述符
fclose(fd);
return 0;
}