我是靠谱客的博主 寒冷火车,这篇文章主要介绍解决C语言输入单个字符屏蔽回车符的问题,现在分享给大家,希望可以做个参考。

C语言的scanf()函数在接收输入单个字符时会把上一次输入的回车符号当做这次输入的字符,造成无法正确的输入字符数据。这恐怕是初学C的童鞋门遇到的最头疼的问题了。

今天给大家提供四种解决方法供借鉴。

1、在scanf()中使用'n'屏蔽回车符号。

scanf("%dn",&n); //使用'n'过滤回车

scanf("%c",&c);

2、在scanf()格式串最前面添加空格,屏蔽回车字符

scanf("%d",&n);

scanf(" %c",&c); //%c前面加空格,过滤回车

3、在接收字符前,使用getchar()来读取一次回车符号

复制代码
1
2
3
scanf("%d",&n); getchar(); //专门用来读取上次输入的回车符号 scanf("%c",&c);

4、在接收字符前,使用fflush()清空输入流中缓冲区中的内容

复制代码
1
2
3
scanf("%d",&n) fflush(stdin); //清空输入流缓冲区的字符,注意必须引入#include <stdlib.h>头文件 scanf("%c",&c);

好了,以后再也不用为这个问题烦恼了.....

补充知识:C语言中使用scanf()对字符(串)进行输入的问题

1. 输入字符串

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h> int main() { int a; char s1[100]; char s2[100]; scanf("%d", &a); scanf("%s", s1); scanf("%s", s2); printf("a = %dn", a); printf("s1 = %sn", s1); printf("s2 = %sn", s2); return 0; }

输入

复制代码
1
2
3
2019 hello world

输出

复制代码
1
2
3
a = 2019 s1 = hello s2 = world

没有问题,因为scanf("%s")遇到换行符会自动跳过

2.输入字符

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h> int main() { int a; char s1; char s2; scanf("%d", &a); scanf("%c", &s1); scanf("%c", &s2); printf("a = %dn", a); printf("s1 = %cn", s1); printf("s2 = %cn", s2); return 0; }

输入

复制代码
1
2
3
2019 A B

输出

复制代码
1
2
3
a = 2019 s1 = s2 = A

可以看到s1将2019后面的回车符'n'吸收了,原因是scanf("%c")在读取单个字符时,空格和回车都被视为单个字符。

解决办法

使用getchar()吸收掉多余的回车

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h> int main() { int a; char s1; char s2; scanf("%d", &a); getchar(); // 吸收"n" scanf("%c", &s1); getchar(); // 吸收"n" scanf("%c", &s2); printf("a = %dn", a); printf("s1 = %cn", s1); printf("s2 = %cn", s2); return 0; }

在格式串中过滤掉回车

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h> int main() { int a; char s1; char s2; scanf("%dn", &a); // 过滤掉回车 scanf("%cn", &s1); scanf("%c", &s2); printf("a = %dn", a); printf("s1 = %cn", s1); printf("s2 = %cn", s2); return 0; }

以上这篇解决C语言输入单个字符屏蔽回车符的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持靠谱客。

最后

以上就是寒冷火车最近收集整理的关于解决C语言输入单个字符屏蔽回车符的问题的全部内容,更多相关解决C语言输入单个字符屏蔽回车符内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(127)

评论列表共有 0 条评论

立即
投稿
返回
顶部