2017-04-16 104 views
-2

这里是我的代码,作为输入计数,然后把这个数量的城市作为输入。
我想打印所有从该字母开始的城市,但程序在将字符作为输入之前结束。 但它并不需要文字输入Scanf没有输入字符

#include <stdio.h> 
void main() 
{ 

char a[20][10]; 
char ch; 
int i,n; 

printf("Enter nos of cities\n"); 
scanf("%d",&n); 
for (i = 0; i < n ; i++) 
{ 
    scanf("%s",a[i]); 
} 
printf("\n"); 

printf("Enter 1st character\n"); 
scanf("%c", &ch); 
for (i = 0; i < n ; i++) 
    if(ch==a[i][0]) 
     printf("%s\n",a[i]);  


} 

OUPUT:

Enter nos of cities 
3 
asd 
zxc 
qw 

Enter 1st character 
+0

谢谢得到了答案 –

+1

-1没有研究问题。 SO上有这个重复的TONS。除了解决问题的方法外,(1)使用标准的'int main(void)'而不是'void main()'。 (2)检查'n'是否不大于20.(3)限制'scanf'的输入以避免缓冲区溢出:'%9s'(4)检查'scanf'的返回值。 –

+0

'line feed in buffer'是新的'i ++ + ++ i':((( – ThingyWotsit

回答

2

使用scanf(" %c", &ch);

从前一个输入的输入被作为输入。因此在%c之前加一个空格。

0

打印换行第15行 因为这printf("\n")scanf以换行符后只需添加一行getchar();getchar()这里跳过(吃掉)换行符。