0
所以我有在C此功能(下面的代码),从我的数据库检查数据。如果这个数据等于255,我想在我的一个GPIO引脚(12)上点亮树莓派上的LED。分段故障
我第一次尝试的代码而不亿立方米的功能,它的工作一切正常。现在我已经包含了bcm2835,并且改变了我的Makefile(编译工作正常),我得到了这个“Segmentation fault”错误。
我知道这意味着我的程序正在使用它不应该使用的内存,但我不知道在bcm行中是什么导致了这种情况。
下面是函数:
void check_pasid(char k[]){
MYSQL *conn;
MYSQL_RES * result;
MYSQL_ROW row;
char *server = "server";
char *user = "myusername";
char *password = "mypassword";
char *database = "dbname";
char query1[100];
// Make the connection to the Mysql-database.
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
sprintf(query1,"SELECT COUNT(*) FROM passcan WHERE UserID = \"%s\";",k);
int result1 = mysql_query(conn, query1);
result = mysql_store_result(conn);
row = mysql_fetch_row(result);
int compare = 1;
compare = strcmp(row[0], "1");
if(compare == 0){
printf("Led is turning on");
// Turn it on
bcm2835_gpio_write(PIN12, HIGH);
delay(5000);
// Turn it off
bcm2835_gpio_write(PIN12, LOW);
}
else{
printf("Led is not turning on");
}
}
我希望有人给我一些信息。
我希望在'k'字符串少于约50个字符,或者你将有一个缓冲区溢出。 –
@JoachimPileborg它是 – moffelnijdam