2017-04-16 15 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です。これには重複しているものがたくさんあります。あなたの問題の解決策に加えて、(1) 'void main()'の代わりに標準の 'int main(void)'を使います。 (2) 'n 'が20を超えていないことを確認する。(3)バッファオーバーランを避けるために' scanf'の入力を制限する: '%9s'(4)' scanf'の戻り値を調べる。 –

+0

'line feed in buffer'は新しい 'i ++ + ++ i'です:(( – ThingyWotsit

答えて

2

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

前の入力からの入力を入力とします。したがって、%cの前にスペースを追加してください。

0

そのprintf("\n")は、改行文字でscanfを供給しているのでジャストライン15 に改行を印刷した後行getchar();を追加します。 getchar()はここで改行文字をスキップ(食べる)します。

関連する問題