C用户定义的功能问题
我正在用C用户定义的功能问题,c,sqlite,function,C,Sqlite,Function,我正在用C测试sqlite3,我决定制作一个简单的程序,从函数的输入中获取用户名和密码,并将其传递到sqlite3数据库表中。我的问题是,每当我提到我在代码中任何地方编写的函数时,每次提到都会出现如下错误: error: expected identifier or ‘(’ before ‘register’ void *register(const char *u,const char *p) 这是我的密码: #include<stdio.h> #include<stri
C
测试sqlite3
,我决定制作一个简单的程序,从函数的输入中获取用户名和密码,并将其传递到sqlite3
数据库表中。我的问题是,每当我提到我在代码中任何地方编写的函数时,每次提到都会出现如下错误:
error: expected identifier or ‘(’ before ‘register’
void *register(const char *u,const char *p)
这是我的密码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sqlite3.h>
void register(const char *u,const char *p)
{
printf("Enter your desired username: \n");
scanf("%s", u);
printf("Enter your desired password: \n");
scanf("%s", p);
}
int main()
{
const char new_user[50];
const char new_pass[50];
sqlite3 *db;
sqlite3_stmt *stmt;
int rc = sqlite3_open("test.db", &db);
if(rc != SQLITE_OK)
{
fprintf(stderr, "Problem opening Database: %s\n", sqlite3_errmsg(db));
return 0;
}
char *sql = "INSERT INTO Users VALUES(?, ?, '0335804828', 'Strada userului nr 9', NULL, 0);";
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);
if (rc == SQLITE_OK)
{
sqlite3_bind_text(stmt, 1, "blala", -1, SQLITE_STATIC);
sqlite3_bind_text(stmt, 2, "blabla", -1, SQLITE_STATIC);
}
else
{
fprintf(stderr, "Failed to execute statement: %s\n", sqlite3_errmsg(db));
}
return 0;
}
#包括
#包括
#包括
#包括
无效寄存器(常量字符*u,常量字符*p)
{
printf(“输入所需用户名:\n”);
scanf(“%s”,u);
printf(“输入所需密码:\n”);
scanf(“%s”,p);
}
int main()
{
const char new_user[50];
const char new_pass[50];
sqlite3*db;
sqlite3_stmt*stmt;
int rc=sqlite3_open(“test.db”和&db);
如果(rc!=SQLITE_OK)
{
fprintf(stderr,“打开数据库时出现问题:%s\n”,sqlite3_errmsg(db));
返回0;
}
char*sql=“插入用户值(?,'0335804828','Strada userului nr 9',NULL,0);”;
rc=sqlite3\u prepare\u v2(db,sql,-1,&stmt,0);
如果(rc==SQLITE_OK)
{
sqlite3_绑定_文本(stmt,1,“blala”,-1,SQLITE_静态);
sqlite3绑定文本(stmt,2,“blabla”,-1,SQLITE静态);
}
其他的
{
fprintf(stderr,“未能执行语句:%s\n”,sqlite3_errmsg(db));
}
返回0;
}
正如您所看到的,代码尚未完成,但由于上述错误,它没有编译。
我寻找过类似的答案,但在我的案例中没有任何效果。我尝试过更改函数及其类型,但没有任何效果。。不能使用关键字作为名称
两个问题。您使用register
作为函数名,但不能使用C关键字
更改名称时,函数参数是错误的const char*u
表示“u”引用的字节是const
,不能更改
void foo(char *u,char *p);
或者如果指针没有改变
void foo(char * const u,char * const p);
@当然是某个程序员。。。我真傻。。另一个问题是将指向常量字符的指针传递给函数。这意味着您不能修改数组的内容(比如在
scanf
中将它们用作目标)。@Someprogrammerdude我的另一个问题是sqlite3_bind_文本使用const char*作为实际参数传递以插入表中。。
void foo(char * const u,char * const p);