Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数等效于sprintf(),可复制最大字符数?_C++_C - Fatal编程技术网

C++ 函数等效于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

如果名称大于sql所能容纳的字符数,那么确保只将50个字符的名称复制到sql的最佳方法是什么?(带N参数的sprintf?)


谢谢。

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, ...);