-2

我听说过这两种功能,但我从来没有真正理解它们的区别。是gets() 为了在不按 Enter 的情况下获取字符串,以及在不按 Entergetch()的情况下只获取一个字符吗?

谢谢

4

4 回答 4

3

getch()是 Windows 和 DOS 系统上的一个函数,conio.h它在 C 中没有标准化。它用于仅(确切地)获取单个字符。它也存在于curses.h*nix 系统中(根据 Mike 在评论中的说法)。

gets()是 C 中的一个标准函数,在新C11标准中已被删除。你可以用它来输入一个字符串,但你永远不应该使用它。您不能使用它来安全地输入字符串,因为只要您键入它就会写入内存。所以你可以很容易地得到缓冲区溢出。

于 2014-02-19T20:43:39.570 回答
0

我从来没有真正理解他们的区别

这些方法具有明显不同的签名(很明显类似于语义恕我直言):

 char *gets( char *str );

 int getch(void);

请注意,这getch()是特定于平台的表示法,等效的标准定义getc()函数需要一个FILE*参数。

于 2014-02-19T20:39:40.063 回答
0

getch是平台或编译器特定的功能。

gets函数用于从标准(控制台)输入返回零个或多个字符。

编辑 1:
根据您的编译器实现,该getch函数可用于在不等待用户的情况下获取字符,或者在不回显到控制台的情况下获取字符。

一个函数获取单个字符,另一个获取多个字符。

于 2014-02-19T20:41:30.347 回答
-1

gets()已在 C11 中删除并在 C++11 中标记为已弃用。

我没听说过getch()。你的意思是getchar()

无论如何,您应该能够自己查找文档。这两个功能是cstdio

于 2014-02-19T20:39:17.860 回答