将文件中的单词及翻译导入数据库
#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
#include <string.h>
int do_insert(sqlite3* db, char *word, char* mean);
int main(int argc, const char *argv[])
{
//打开数据库
sqlite3* db = NULL;
if(sqlite3_open("./my.db", &db) != SQLITE_OK)
{
printf("err_code:%d
", sqlite3_errcode(db));
printf("errmsg:%s
", sqlite3_errmsg(db));
fprintf(stderr, "__%d__ sqlite3_open failed
", __LINE__);
return -1;
}
printf("sqlite3_open success
");
//执行sql语句
//创建一个表格
char* sql = "create table if not exists dictionary (word char, mean char);" ;
char* errmsg = NULL;
if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
fprintf(stderr, "__%d__ sqlite3_exec:%s
", __LINE__, errmsg);
return -1;
}
printf("create table success
");
//打开文件
FILE* fp = fopen("./dict.txt", "r");
if(fp == NULL)
{
perror("fopen");
return -1;
}
char buff[128]="";
int i = 0;
int j = 0;
char word[50]="";
char mean[50]="";
//读取一行
while(fgets(buff, sizeof(buff), fp) != NULL)
{
bzero(word, sizeof(word));
bzero(mean, sizeof(mean));
//分离单词和翻译
//找到第一个 .然后往前找到第一个空格即是单词和翻译的分隔点
for(i=0; i<sizeof(buff); i++)//找第一个.的位置
{
if(buff[i] == .)
{
for(j=i-1; j>0; j--)//找到分隔点
if(buff[j] == )
{
buff[j-1]=0;//分隔点前一赋值为0
break;
}
}
}
sprintf(word,"%s", buff);//单词
sprintf(mean,"%s", buff+j);//翻译
printf("%s %s", word, mean);
//插入数据表中
if(do_insert(db, word, mean) < 0)
{
break;
}
//数组清空避免干扰
bzero(buff, sizeof(buff));
}
//关闭文件
if(fclose(fp) < 0)
{
perror("fclose");
return -1;
}
//关闭数据库
if(sqlite3_close(db) != SQLITE_OK)
{
printf("err_code:%d
", sqlite3_errcode(db));
printf("errmsg:%s
", sqlite3_errmsg(db));
fprintf(stderr, "__%d__ sqlite3_close failed
", __LINE__);
return -1;
}
printf("sqlite3_close success
");
return 0;
}
//插入到表中
int do_insert(sqlite3* db, char *word, char* mean)
{
char sql[128] = "";
sprintf(sql, "insert into dictionary values ("%s", "%s")", word,mean);
char* errmsg = NULL;
if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
fprintf(stderr, "__%d__ sqlite3_exec:%s
", __LINE__, errmsg);
return -1;
}
return 0;
}
结果
dict.txt文件内容:
上一篇:
Java架构师技术进阶路线图
下一篇:
linux应用开发经验总结
