如果你和我一样用的是VS2019(或者VS2005之后的版本),那么你需要知道scanf()函数的名称更改为scanf_s()了,如果你用scanf(),编译时C就会向你发出错误提醒,点击错误码C4996会跳转到帮助网页,在那里会有详尽的解释。下图是官网对名称修改的解释,注意到一句话“如果需要使用现有函数以实现可移植性,则可以关闭这些警告”,根据官网提供的办法之一,我在主程序的最前面插入以下代码:
#pragma warning(disable : 4996)
依旧使用scanf()名称,编译运行顺利。到这里,如果你是像我一样的初学者,你可能会问为什么不改成scanf_s()呢?为什么官网提供将错就错的办法而不是让我们乖乖改成scanf_s()呢?这就跟C的可移植性有关系了。C语言是可移植的语言,在一种系统中编写的C程序稍作修改或不修改就能在其他系统运行。初学C的我还没学到,就先提醒大家可移植性是非常非常重要的。
回到最初的话题,当你照着书上的例子敲代码并快快乐乐地运行时,就会被微软的错误提醒打脸,我们再来看看那个提醒:
‘scanf’