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");
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的主要内容,如果未能解决你的问题,请参考以下文章