将文件中的单词及翻译导入数据库
#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应用开发经验总结