资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > C/C++/C#

解决C语言输入单个字符屏蔽回车符的问题

C/C++/C# 更新时间: 发布时间: 计算机考试归档 最新发布

解决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()来读取一次回车符号

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

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

scanf("%d",&n)
fflush(stdin); //清空输入流缓冲区的字符,注意必须引入#include 头文件
scanf("%c",&c);

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

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

1. 输入字符串

#include
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;
}

输入

2019
hello
world

输出

a = 2019
s1 = hello
s2 = world

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

2.输入字符

#include
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;
}

输入

2019
A
B

输出

a = 2019
s1 =
s2 = A

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

解决办法

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

#include
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;
}

在格式串中过滤掉回车

#include
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语言输入单个字符屏蔽回车符的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持趣学号。

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/61125.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【解决C语言输入单个字符屏蔽回车符的问题】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2