function(char* name)
{
char sql[50];
sprintf(sql, "select %s;", name);
}
確保在案例名稱中只有50個字符的名字被複制到sql的最佳方式是什麼比sql能容納的大嗎? (帶有N參數的sprintf?)與sprintf()等價的函數具有最大數量的要複製的字符?
謝謝。
function(char* name)
{
char sql[50];
sprintf(sql, "select %s;", name);
}
確保在案例名稱中只有50個字符的名字被複制到sql的最佳方式是什麼比sql能容納的大嗎? (帶有N參數的sprintf?)與sprintf()等價的函數具有最大數量的要複製的字符?
謝謝。
有snprintf
,這也需要一個尺寸參數:
int snprintf(char *str, size_t size, const char *format, ...);
snprintf
,儘管如果您打印N個字符它不會終止。
大多數編譯器有一個的snprintf()函數。
你想要snprintf()。
int snprintf(char *str, size_t size, const char *format, ...);
其實'snprintf'總是空終止輸出。 'strncpy'是你需要注意的功能。 – 2010-04-24 00:05:00
一些較早的編譯器(C99之前版本)確實存在如果達到緩衝區限制不會終止的問題。 – richb 2010-04-24 00:09:39