考慮下面的代碼:的snprintf截斷最後一個標誌
char *myContent = "content";
int size = snprintf(NULL, 0, "INSERT INTO myTable (col1) VALUES('%s')",myContent);
char *query = malloc(size+2);
snprintf(query, size, "INSERT INTO myTable (col1) VALUES('%s')",myContent);
現在我有一個最後的支架被截斷的問題:
(gdb) print query
$2 = 0x616080 "INSERT INTO myTable (col1) VALUES('content'"
這不是一個有效的SQL語句,所以有你一個想法是什麼原因可能是最後一個支架缺失?
ha ..我已經試過char * query = malloc(size + 1);但我忘記了snprintf中的+1。謝謝 – mkind 2011-06-12 13:43:37