|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
编译器是visual studio2022,用fgets函数获取字符串的代码都和教程上的一样,但运行时发现按回车会退出程序,而不是“请按任意键继续”
- #include<stdio.h>
- //fgets():
- int main()
- {
- char ch[10];
- fgets(ch, sizeof(ch), stdin);
- printf("%s", ch);
- return 0;
- }
复制代码
这是因为在 Windows 系统中,回车键(carriage return)和换行键(line feed)组成了一个 CRLF 的组合,而 fgets 函数默认会将 CRLF 视为输入结束符,因此你需要手动将其转换为单个字符或者忽略它们。
以下是两种解决方案:
1. 将 CRLF 转换为单个字符:
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char ch[10];
- fgets(ch, sizeof(ch), stdin);
- ch[strcspn(ch, "\r\n")] = '\0'; // 将 CRLF 转换为单个字符
- printf("%s", ch);
- return 0;
- }
复制代码
2. 忽略 CRLF:
- #include <stdio.h>
- int main()
- {
- char ch[10];
- fgets(ch, sizeof(ch), stdin);
- if (ch[strlen(ch) - 1] == '\n') // 如果最后一个字符是换行符
- {
- ch[strlen(ch) - 1] = '\0'; // 将其替换为字符串结束符
- }
- printf("%s", ch);
- return 0;
- }
复制代码
希望能够帮助到你。
|
|