本文介绍了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未按预期工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!