scanf未按预期工作 [英] scanf not working as expected

查看:23
本文介绍了scanf未按预期工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在ubuntu 15.10中执行以下简单代码,但代码的行为比预期的奇怪

#include<stdio.h>
int main(){
int n,i=0;
char val;
char a[20];

printf("
Enter the value : ");
scanf("%s",a);
printf("
Enter the value to be searched : ");
scanf("%c",&val);

int count=0;
for(i=0;i<20;i++){
 if(a[i]==val){
   printf("
%c found at location %d",val,i);
   count++;
 }
}
printf("
Total occurance of %c is %d",val,count);
   return 0;
}

output:
--------------------------
Enter the value : 12345678
Enter the value to be searched : 
Total occurance of is 0
用于获取要搜索的值的第二个scanf似乎不起作用。代码的睡觉在第一次扫描后执行,第二次没有输入。

推荐答案

在第一个scanf()之后,在每个scanf()的格式化部分放置一个空格

因此更改此设置

scanf("%c",&val);

进入此

scanf(" %c",&val);

原因是,scanf()在看到换行符时返回,当第一次运行scanf()时,您键入input并按Enter键。scanf()使用您的输入,但不使用剩余的换行符,因此,在scanf()之后使用剩余的换行符。

在格式化部分中放置空格会消耗剩余的换行符。

这篇关于scanf未按预期工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆