将文件中的单词及翻译导入数据库

#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文件内容:

经验分享 程序员 微信小程序 职场和发展