int function(char* txt)
{
sprintf(txt, "select * from %s;", table);
//How do I set last char in buffer to NULL here?
}
因此,如果在表中的文本一些如何被500個字符在主長和txt
由於只定義爲100 ....。
int function(char* txt)
{
sprintf(txt, "select * from %s;", table);
//How do I set last char in buffer to NULL here?
}
因此,如果在表中的文本一些如何被500個字符在主長和txt
由於只定義爲100 ....。
您需要
snprintf()
代替sprintf()
snprintf()
的返回值來緩衝多大需要的大小的功能要保存所有格式化的數據;如果它大於或等於緩衝區的大小,則應該按照您認爲合適的方式處理它(緩衝區仍然以null結尾,但內容將被截斷以適合;無論這是否正確或者錯誤完全取決於您的使用情況)(和你的函數需要返回類型...)
謝謝,我不確定是否有其他方法。 – 2010-05-11 00:55:37
您應該能夠使用的snprintf限制所使用的緩衝液的量。
function(char* txt, size_t length)
{
int rv;
rv = snprintf(txt, length, "select * from %s;", table);
//How do I set last char in buffer to NULL here?
if (rv >= length) {
// error
}
}
關於你能做的唯一的事情就是的malloc足夠的內存,格式化串入內存,並返回一個指向它。然後,調用函數將負責釋放內存。
你可以做的比這更多。 – WhirlWind 2010-05-11 01:12:29
我希望表中的文本不會來自Bobby表 – 2010-05-11 01:01:54
NUL是'\ 0'字符,NULL是未初始化的指針。 – detly 2010-05-11 01:07:15