2017-04-16 100 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()這裏跳過(吃掉)換行符。