考虑下面的代码:的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