Gets函数未定义。

3

我正在使用Visual Studio 2015,想用C语言编写与文件相关的代码。我希望从键盘获取一个名称(然后将此名称放入文件中),并使用函数gets。但是它不起作用,编译器会显示“gets未定义”。请问有谁能帮帮我吗?


1
你能展示一下你的代码吗? - Haris
1
请注意,gets()已经被弃用 - Enkelli
1
msdn:这些函数已经过时。从Visual Studio 2015开始,它们在CRT中不再可用。这些函数的安全版本gets_s和_getws_s仍然可用。 - Enkelli
4
gets 不仅仅是被弃用了。自 C11 版本以来,它已经被完全从标准库中 删除 了。任何试图遵循 C11 标准的工具链都不应再提供其服务(正如您所看到的)。 - WhozCraig
@WhozCraig 的确。根据前言第6段:- 已删除 gets 函数 (<stdio.h>) (第 xiv 页顶部,C 标准链接: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf) - Andrew Henle
还有两点需要注意:(1)无论是哪本书、哪个教程或者是哪位老师曾经向你介绍过 gets 函数,他们都已经严重过时了,你需要对他们的其他教学内容保持怀疑态度。(2)在你切换到使用 fgets 后,下一个问题很可能是:“但是换行符呢?”请参考这里 - Steve Summit
1个回答

2

评论指出gets已经完全删除。原因是因为gets很容易导致缓冲区溢出

应该使用fgets,因为你可以将输入限制在缓冲区的大小上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接