C访问冲突写入位置scanf_s

use*_*659 1 c string printf pointers scanf

这是我的代码:

main()
{
    char firstName[30], lastName[30];
    printf("What is your name? ");
    scanf_s("%s %s", firstName, lastName);
    printf("Your name is %s %s\n", firstName, lastName);
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用scanf,但VS表示不推荐使用scanf_s.我知道你在变量之前使用&/指针,除非它是一个字符串/ char [](这应该是),我真的不知道错误是什么.也许这是方法参数?任何帮助赞赏.

小智 5

MS习惯用"安全"版本替换标准C函数,scanf_s就是这样一种实现.文档在这里:http://msdn.microsoft.com/en-us/library/w40768et.aspx

我相信如果你做出这个改变,错误就会消失:

scanf_s("%s %s", firstName, _countof(firstName), lastName, _countof(lastName));
Run Code Online (Sandbox Code Playgroud)

我也相信有办法解决他们语言的腐败问题,但正是出于这个原因,我多年前就停止使用MSVC.