gets()和getch()有什么区别?

时间:2014-02-19 20:34:50

标签: c++ gets getch

我听说过这两种功能,但我从未真正理解他们的差异。是gets() 没有按Enter键获取字符串而{?1}}只获得一个字符而不按Enter键?

由于

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

  

我从未真正理解他们的差异

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

 char *gets( char *str );

 int getch(void);

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

答案 2 :(得分:0)

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

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

编辑1:
根据您的编译器实现,getch函数可用于获取角色而无需等待用户或获取角色而不回显到控制台。

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

答案 3 :(得分:-1)

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

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

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

的一部分