C语言中scanf函数与gets函数连用导致一个问题

今天做C语言题目的时候遇到的这么一个题在这里插入图片描述
下面是我写的一段代码

#include<stdio.h>
#include<string.h>
int main()
{
	char c[80];
    int a,e,i,o,u;
    int x,n,k,z;
    scanf("%d",&n);
  for(x=1;x<=n;x++)
  {
    a=e=i=o=u=0;
    gets(c);
    z=strlen(c);
    for(k=0;k<z;k++)
    {
       if(c[k]=='a'||c[k]=='A'||c[k]=='h'||c[k]=='H')
           a++;
       if(c[k]=='e'||c[k]=='E')
           e++;
	   if(c[k]=='i'||c[k]=='I'||c[k]=='Y'||c[k]=='y')
		   i++;
	   if(c[k]=='o'||c[k]=='O')
		   o++;
	   if(c[k]=='u'||c[k]=='U')
		   u++;
    }
    printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d",a,e,i,o,u); 
    printf("\n");
  }   
}

运行结果如下
在这里插入图片描述
输入的是2,实际上有用的循环只又一次,还有一次循环在输入2后按下回车就立即运行了一次,为了看明白怎么回事,把代码简化一下再运行
在这里插入图片描述
注意上图的空格,这个空格既是scanf结束的标志,又作为字符输进了gers里面
那么该怎么解决这个问题呢?
经过反复实验后发现,我们只需要在scanf后面加上getchar就行了,运行结果如下
在这里插入图片描述
我们可以发现空格消失了,但这种方法也就用于调整格式,因为一个getchar只能存一个字符,要是空格或是回车等多输入了也就不行了,比如下面这样在这里插入图片描述
但可以根据实际情况自己来调整,觉得有用就点个赞吧。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值