2016-06-26 14 views
0

で、C言語での1文字の入力に:私はちょうどこの出くわしたのUbuntu

#include <stdio. h> 

int main() 
{ 
char fname,sname; 
printf("your first name?: "); 
flushall(); 
scanf("%c", &fname); 
printf("your last name?: "); 
scanf("%c", &sname); 
printf("initials: %c. %c",fname,sname); 

return 0; 
} 

問題は、私は何も入力にできないのprintf文とメートルを取得しています。

それはちょうど

P.S:私はUbuntuの15.10を使用してfflush(stdin)fpurge()を使用しますが、それらのどれも働いていないよ...入力部をスキップします。

+0

あなたのコードは間違っていて不完全です。プログラムの動作に関する解説が必要な場合は、[mcve]を提示してください。サンプルの入力、期待される出力、実際の出力も表示して、プログラムの動作に関する混乱を明確にします。 –

+1

*「私はこれを見つけました」*あなたはそれをどこで見つけましたか? –

答えて

0

私はUbuntu 16.04を使用しています。

まず、stdio_ext.hを使用して__fpurge()を使用します。

いつもscanf()の前には、_fpurge(stdin)を実行してください。

私にとってはうまく機能しました。

あなたは__fpurge()をどのように使用しましたかを使用しました。これが私にあなたに__fpurge()をもう一度お試しくださいという回答を与えている理由です。 x)

#include <stdio.h> 
#include <stdio_ext.h> 
int main() 
{ 
char fname,sname; 
printf("your first name?: "); 
__fpurge(stdin); 
scanf("%c", &fname); 
printf("your last name?: "); 
__fpurge(stdin); 
scanf("%c", &sname); 
printf("initials: %c. %c",fname,sname); 

return 0; 
} 
+0

Thx man。それは働いた:D – nimish642

0

このコードはwell.Iが 第二のscanfは次のようにする必要があります(改行すなわちのように)他の文字のために必要な第二のscanfの余分なスペースの後に、だと思う作品 - >>scanf(" %c",&sname) そしてflushall私は

#include <stdio.h> 

int main() 
{ 
char fname,sname; 
printf("your first name?: "); 
scanf("%c", &fname); 
printf("your last name?: "); 
scanf(" %c", &sname); 
printf("initials: %c. %c",fname,sname); 

return 0; 
} 
考えて、不可欠なありません
+0

返信後に削除された以前の似たような回答が見られなかったことは残念です*「一般的に間違いを指摘するのは、そのような回答が実際に質問に答えるかどうかわからない場合はコメントを適切に使用することです」* –

+0

私はこれを以前に試しましたが、それは動作しません.. – nimish642

+0

私はubuntu too.Thisコードを使用してうまく動作します。 –

関連する問題