【发布时间】:2022-01-14 01:22:45
【问题描述】:
我尝试了不同类型的字符串输入(scanf、getchar、gets),但没有一个可以用 Enter 完成输入。大家有什么想法吗?
【问题讨论】:
-
[Enter]是键盘上的一个键,而不是一个字符。如果您指的是基于行的输入的换行符,您可以使用fgets。永远不要使用gets。从不。
我尝试了不同类型的字符串输入(scanf、getchar、gets),但没有一个可以用 Enter 完成输入。大家有什么想法吗?
【问题讨论】:
[Enter] 是键盘上的一个键,而不是一个字符。如果您指的是基于行的输入的换行符,您可以使用fgets。永远不要使用gets。从不。
正如 Cheatah 所说,您要查找的函数是 fgets()。始终尽量避免使用gets(),因为它不提供针对缓冲区溢出漏洞的保护,并且可能会导致您的程序出现大问题。您可以阅读此问题的一些答案,以阐明每个功能的实用性
Scanf() vs gets() vs fgets()
【讨论】:
#include <stdio.h>
char str[20]; // String with 19 characters (because last character is null character)
int main() {
fgets(str, 20, stdin); // Read string
puts(str); // Print string
return 0;
}
【讨论】: