本篇文章为大家展示了C语言中输入单个字符会屏蔽回车符如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
1、在scanf()中使用'\n'屏蔽回车符号。
scanf("%d\n",&n); //使用'\n'过滤回车
scanf("%c",&c);
2、在scanf()格式串最前面添加空格,屏蔽回车字符
scanf("%d",&n);
scanf(" %c",&c); //%c前面加空格,过滤回车
3、在接收字符前,使用getchar()来读取一次回车符号
scanf("%d",&n); getchar(); //专门用来读取上次输入的回车符号 scanf("%c",&c);
4、在接收字符前,使用fflush()清空输入流中缓冲区中的内容
scanf("%d",&n) fflush(stdin); //清空输入流缓冲区的字符,注意必须引入#include <stdlib.h>头文件 scanf("%c",&c);
好了,以后再也不用为这个问题烦恼了.....
补充知识:C语言中使用scanf()对字符(串)进行输入的问题
1. 输入字符串
#include<stdio.h> int main() { int a; char s1[100]; char s2[100]; scanf("%d", &a); scanf("%s", s1); scanf("%s", s2); printf("a = %d\n", a); printf("s1 = %s\n", s1); printf("s2 = %s\n", s2); return 0; }
输入
2019 hello world
输出
a = 2019 s1 = hello s2 = world
没有问题,因为scanf("%s")遇到换行符会自动跳过
2.输入字符
#include<stdio.h> int main() { int a; char s1; char s2; scanf("%d", &a); scanf("%c", &s1); scanf("%c", &s2); printf("a = %d\n", a); printf("s1 = %c\n", s1); printf("s2 = %c\n", s2); return 0; }
输入
2019 A B
输出
a = 2019 s1 = s2 = A
可以看到s1将2019后面的回车符'\n'吸收了,原因是scanf("%c")在读取单个字符时,空格和回车都被视为单个字符。
解决办法
使用getchar()吸收掉多余的回车
#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 = %d\n", a); printf("s1 = %c\n", s1); printf("s2 = %c\n", s2); return 0; }
在格式串中过滤掉回车
#include<stdio.h> int main() { int a; char s1; char s2; scanf("%d\n", &a); // 过滤掉回车 scanf("%c\n", &s1); scanf("%c", &s2); printf("a = %d\n", a); printf("s1 = %c\n", s1); printf("s2 = %c\n", s2); return 0; }
上述内容就是C语言中输入单个字符会屏蔽回车符如何解决,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。