C++ 函数等效于sprintf(),可复制最大字符数?
如果名称大于sql所能容纳的字符数,那么确保只将50个字符的名称复制到sql的最佳方法是什么?(带N参数的sprintf?)C++ 函数等效于sprintf(),可复制最大字符数?,c++,c,C++,C,如果名称大于sql所能容纳的字符数,那么确保只将50个字符的名称复制到sql的最佳方法是什么?(带N参数的sprintf?) 谢谢。snprintf,但如果您打印N个字符,它不会以null结尾。有snprintf,它还接受一个大小参数: function(char* name) { char sql[50]; sprintf(sql, "select %s;", name); } 大多数编译器都有一个snprintf()函数。您需要snprintf() 实际上,snp
谢谢。
snprintf
,但如果您打印N个字符,它不会以null结尾。有snprintf
,它还接受一个大小参数:
function(char* name)
{
char sql[50];
sprintf(sql, "select %s;", name);
}
大多数编译器都有一个snprintf()函数。您需要snprintf()
实际上,
snprintf
总是以null终止输出strncpy
是您需要注意的函数。一些较旧的编译器(C99之前)确实存在这样的问题:如果达到缓冲区限制,则不会出现null终止。
int snprintf(char *str, size_t size, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);