C访问冲突写入位置scanf_s

时间:2014-04-22 18:21:10

标签: c string pointers printf 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);
}

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

1 个答案:

答案 0 :(得分:5)

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

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

scanf_s("%s %s", firstName, _countof(firstName), lastName, _countof(lastName));

我也相信有办法绕过他们语言的腐败,但正是出于这个原因,我多年前就停止使用MSVC了。