C访问冲突写入位置scanf_s

标签 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。我知道你在变量之前使用 &/pointer 除非它是一个 string/char[] (这本来就是)而且我真的不知道错误是什么。也许是方法参数?任何帮助表示赞赏。

最佳答案

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

我相信如果您进行此更改,错误将会消失:

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

我也相信有一种方法可以解决他们对语言的破坏,但正是出于这个原因,我多年前就停止使用 MSVC。

关于C访问冲突写入位置scanf_s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23227326/

相关文章:

c - 我的 Int* 数组是否全部初始化为 NULL?

c - 我应该使用什么预处理器指令或其他方法来辨别 32 位和 64 位环境?

c++ - 安装旧版本的 gcc

javascript - 用于查找旅行/旅程的起始位置的函数

c - 关于c中的malloc指针

c - 是否可以在函数内部分配数组并使用引用返回它?

c - 在为所有枚举值定义大小写后,编译器仍然说 : "control reaches end of non-void function"

c++ - 类与类型和对象与变量

c# - 如何安全地拆分字符串?

android - 以字符串形式读取 Assets 文件