我听说过这两种功能,但我从未真正理解他们的差异。是gets()
没有按Enter键获取字符串而{?1}}只获得一个字符而不按Enter键?
由于
答案 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