当我调用mysql_init(mysql);
时,它会覆盖char
数组。我不明白我做错了什么。我的代码:
void prepare_mysql(MYSQL *mysql) {
mysql_library_init(0, NULL, NULL);
mysql_init(mysql);
}
void get_uid(char *src, char *dst) {
int i, len, count = 0;
len = strlen(src);
for(i = 0; i != len; i++) {
if(src[i] == '-') { // iterate until a - sign is found
break;
}
dst[count] = src[i]; // save char into dst
count++;
}
dst[count] = '\0'; // add null char at the end of char array, otherwise everything will explode...
// dst is now: 389302
}
int main(int argc, char *argv[]) {
// argv[1] is for example: 389302-8232
char uid;
get_uid(argv[1], &uid);
printf("uid = %s\n", &uid); // prints: 389302 (correct)
MYSQL conn;
prepare_mysql(&conn);
printf("uid = %s\n", &uid); // prints: 3 (the first char only.. why?)
mysql_close(&conn);
mysql_library_end();
return 0;
}
如果我在致电get_uid
后拨打mysql_init
电话,我就无法拨打mysql_close(&conn)
,因为我收到了Segmentation fault
。请帮忙,我无法理解..
编辑: 我在main中添加了这个:
char *uid = malloc(strlen(argv[1]));
后来在主要部分,我打电话给free(uid);
。现在它似乎在我打电话之前无处不在正确打印。
答案 0 :(得分:3)
你没有char数组 - massUnit
只是一个字符。