什么是sprintf的sprintf_s模拟(newpath,“%s%s”,...)?

时间:2012-01-18 06:49:57

标签: c visual-studio-2010

我正在使用sprintf(newpath, "%s%s", cCurrentPath, "\\init.scm");将\ init.scm添加到当前目录路径,但通常会发出警告:

  

warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

Sprintf_s不支持此类“%s%s”字符串总和。如何使用sprintf_s

进行操作

1 个答案:

答案 0 :(得分:14)

sprintf_ssprintf基本相同,但它会获得另一个参数:

sprintf_s(newpath, sizeof(newpath), "%s%s", cCurrentPath, "\\init.scm");

注意 - 如果newpath是普通字符数组,则sizeof(newpath)有效。如果它是作为参数传递的指针或数组,您可能需要一种不同的方式来获得大小 您也可以在非MS环境中使用snprintf用于相同的目的(尽管它的工作方式不同)。