linux下c操作sqlite3 运行后(编译没有错)当我输入4(insert-data)直接说段错误TAT

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下c操作sqlite3 运行后(编译没有错)当我输入4(insert-data)直接说段错误TAT相关的知识,希望对你有一定的参考价值。

程序只贴出了insert 和部分main

void insert_data()

sqlite3 *db=NULL;
char *ErrMsg = 0;
int row=0,column=0;
char **result;
char *sql = "CREATE TABLE PhoneBook(ID INTEGER PRIMARY KEY,NAME TEXT, PHONENUMBER TEXT);";
sqlite3_exec(db,sql,0,0,&ErrMsg);
int rc;
rc = sqlite3_open("PhoneBook.db", &db);
int k;
int m=row;
char name[20];
char phonenumber[20];
for(k=0;k<=100;k++)

printf ("Please input a name: ");
gets (name);
if(strlen(name) == 0) break; //直接回车即结束
printf ("Phonenumber of %s is: ",name);
gets (phonenumber);
char *sql=sqlite3_mprintf("insert into PhoneBook values('%d','%s','%s')",m,name,phonenumber);
sqlite3_exec(db,sql,NULL,NULL,&ErrMsg);
memset(name,0,sizeof(name));
memset(phonenumber,0,sizeof(phonenumber));
m++;

int main(void)

sqlite3 *db=NULL;
char *ErrMsg = 0;
int rc;
rc = sqlite3_open("PhoneBook.db", &db);
if(rc!=SQLITE_OK)

fprintf(stderr,"Can't open database: %s\n",sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);

else
printf("A database named PhoneBook.db Established or Loaded!\n");
char *sql = "CREATE TABLE PhoneBook(ID INTEGER PRIMARY KEY,NAME TEXT, PHONENUMBER TEXT);";
sqlite3_exec(db,sql,0,0,&ErrMsg);
char **result;

while(1)
int n;
printf("\n 1.insert ");
printf("choose[1 - 5]:");
scanf("%d" , &n);
switch(n)

case 1:
insert_data();
printf("insert success\n");

参考技术A 段错误 用strace来追踪。

Linux下如何编译,运行C程序?需要安装编译器吗

首先一定要安装 gcc (或者 cc )编译器。然后在 Linux 系统下,首先使用 vi 全屏幕编辑程序编辑一个后缀名为 .c 的文件,然后使用 gcc 编译器对你的 C 语言源程序进行编译、连接。最后才能够运行生成后的运行文件(如果你的源程序没有任何编译错误的话)。当然了,在 gcc 的编译过程中,会有很多选择项。这个就是靠编程经验了。

举例如下:
gcc test.c -o myrunfile ( -o 选项指定输出的运行文件名为:myrunfile,如果不指定 -o 选项的话,缺省的运行文件名为:a.out)
参考技术A gcc编译,必须安装

以上是关于linux下c操作sqlite3 运行后(编译没有错)当我输入4(insert-data)直接说段错误TAT的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Linux 环境下 运行 C 语言项目?

如何在Linux下用C/C++语言操作数据库sqlite3

求助:为啥我编的C++程序在自己电脑上能正常运行,但编译后挂在后台linux系统下就总是运行一半后出错,

Linux下如何编译,运行C程序?需要安装编译器吗

Linux下如何运行C程序?

gcc 编译多文件批处理文件