#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlite3.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
//如果数据库不存在则创建后打开
//如果存在则直接打开
sqlite3* db=NULL;
if(sqlite3_open("./my.db",&db)!=0)
{
fprintf(stderr,"errcode:%d sqlite3_open:%s\n",sqlite3_errcode(db),sqlite3_errmsg(db));
return -1;
}
printf("sqlite3_open successs\n");
//创建一个表
//注意:c代码中的sql语句与在数据库中编写的一致
char sql[128]="create table if not exists cihui (单词 char,意思 char);";
char* errmsg=NULL;
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=0)
{
fprintf(stderr,"line:%d sqlite3_exec:%s\n",__LINE__,errmsg);
return -1;
}
printf("create table stu successs\n");
//打开单词表
FILE* fd=fopen("./dict.txt","r");
char buf[32]="";
char buf1[32]="";
char buf2[32]="";
char c[3]="";
while(1)
{
bzero(buf,sizeof(buf));
bzero(buf1,sizeof(buf1));
bzero(c,sizeof(c));
fscanf(fd,"%s",buf);//获取每一行第一个单词
if(buf[0]=='\0') //读到结尾退出
break;
fgets(c,3,fd);//读取后面2个字符
if(strcmp(c," ")!=0) //如果其中有不为空格的
{
while(1)
{
bzero(buf2,sizeof(buf2));
fseek(fd,-1,SEEK_CUR); //向前偏移一个单位
fscanf(fd,"%s",buf2); //获取第二个单词
strcat(buf," ");
strcat(buf,buf2); //拼接2个单词为一个单词
fgets(c,3,fd); //继续读取后面2个字符
if(strcmp(c," ")==0) //如果后面2个字符都为空格则退出循环
break;
}
}
fseek(fd,1,SEEK_CUR); //向后偏移一个单位
fgets(buf1,32,fd); //获取单词的意思
buf1[strlen(buf1)-1]='\0';
char sql[128]="insert into cihui values (\""; //sql语句
strcat(sql,buf);
strcat(sql,"\",\"");
strcat(sql,buf1);
strcat(sql,"\");"); //拼接sql语句
char* errmsg1=NULL;
fprintf(stderr,"%s\n",sql);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg1)!=0) //执行sql语句
{
fprintf(stderr,"line:%d sqlite3_exec:%s\n",__LINE__,errmsg1);
return -1;
}
}
fclose(fd);
//关闭数据库
if(sqlite3_close(db)!=0)
{
fprintf(stderr,"errcode:%d sqlite3_open:%s\n",sqlite3_errcode(db),sqlite3_errmsg(db));
return -1;
}
return 0;
}
ubuntu@ubuntu:wangluobiancheng$