以下代码在执行_strset_s
时崩溃我在_ strset_s
中给出了80长度。可能是什么问题呢?。我启用了运行时堆栈帧检查选项/RTCs
char strToken[80];
_strset_s(strToken, 80, '\0' );
答案 0 :(得分:4)
您可以让编译器使用
进行填充char strToken[80] = {0};
这将使字符串的所有字节为零。
答案 1 :(得分:2)
根据MSDN,_strset_s
的输入必须为空终止。由于您的字符串未初始化为任何内容,因此违反了此不变量。
如果str是空指针,或者size参数小于或等于0,或传入的块不是以null结尾,则调用无效参数处理程序,
默认的“无效参数处理程序”将再次从MSDN:
崩溃默认的无效参数调用Watson崩溃报告,导致应用程序崩溃并询问用户是否要将崩溃转储加载到Microsoft进行分析。
所以我首先尝试Null终止strToken(或者更好的做Bo Persson在答案中的建议)
char strToken[80];
strToken[79] = '\0';
_strset_s(strToken, 80, '\0' );