【发布时间】:2014-02-19 20:34:49
【问题描述】:
我听说过这两种功能,但我从未真正了解它们的区别。是gets()
无需按回车即可获取字符串,getch() 无需按回车即可仅获取一个字符?
谢谢
【问题讨论】:
-
另外,搜索和比较文档应该很容易。
-
您熟悉手册页吗?
-
一个得到一个's',另一个得到一个'ch'。
我听说过这两种功能,但我从未真正了解它们的区别。是gets()
无需按回车即可获取字符串,getch() 无需按回车即可仅获取一个字符?
谢谢
【问题讨论】:
getch() 是 Windows 和 DOS 系统上 conio.h 中的一个函数,它在 C 中未标准化。它用于仅(确切地)获取单个字符。它也存在于 *nix 系统上的 curses.h 中(根据 cmets 中的 Mike 所说)。
gets() 是 C 中的标准函数,在新的 C11 标准中被删除。您可以使用它来输入字符串,但您应该永远不要使用它。您不能使用它来安全地输入字符串,因为只要您键入它就会写入内存。所以你可以很容易地得到缓冲区溢出。
【讨论】:
getch 不是 Window 的唯一功能。它可以在curses.h for *ix 中使用
我从来没有真正理解他们的区别
这些方法具有明显不同的签名(很明显类似于语义,恕我直言):
char *gets( char *str );
int getch(void);
请注意,getch() 是特定于平台的表示法,等效标准定义的 getc() 函数需要 FILE* 参数。
【讨论】:
getch 是平台或编译器特定的函数。
gets 函数用于从标准(控制台)输入返回零个或多个字符。
编辑 1:
根据您的编译器实现,getch 函数可用于在不等待用户的情况下获取字符,或在不回显到控制台的情况下获取字符。
一个函数获取单个字符,另一个获取多个字符。
【讨论】:
gets() 已在 C11 中删除,并在 C++11 中标记为已弃用。
我没听说过getch()。你的意思是getchar()?
无论如何,您应该能够自己查找文档。这两个函数是cstdio的一部分
【讨论】: