【发布时间】:2015-12-25 03:45:57
【问题描述】:
我尝试在 ubuntu 15.10 中执行以下简单代码,但代码的行为比预期的要奇怪
#include<stdio.h>
int main(){
int n,i=0;
char val;
char a[20];
printf("\nEnter the value : ");
scanf("%s",a);
printf("\nEnter the value to be searched : ");
scanf("%c",&val);
int count=0;
for(i=0;i<20;i++){
if(a[i]==val){
printf("\n%c found at location %d",val,i);
count++;
}
}
printf("\nTotal 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 之后执行,第二次没有输入。
【问题讨论】:
-
1)
scanf("%c",&val);-->scanf(" %c",&val);2)i<20-->i<20 && a[i]3)scanf("%s",a);-->scanf("%19s", a);(i<20--> @987654329 @) -
ia[i]我的错字为a[i] -
为什么不检查
scanf的返回值呢?也让它不超出数组 -
如果你正为此痛苦地嚎叫,scanf() 正在按预期工作。
-
%c 接受 '\n', 12345678(Enter) -> 12345678'\n'