POJ2236 Wireless Networkは
少し面倒な問題を解決しながら、遭遇した、これは仕事をしません見つける入力して循環した後、char型の変数CHを宣言し、C / C ++入力の問題にいくつかを要約した後、他の問題への解決策だけでなく、情報へのアクセスを参照してください。 。
まず、コードを投稿しました:
#include <stdio.h>
int main() {
char ch;
while(~scanf("%c", &ch)) {
if(ch == 'O')
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
実行結果:
O
YES
NO
。1
NO
NO
なぜこのような結果はありますか?
scanf関数は、文字を読むことをするので、それはまた、空白文字(改行、スペース、タブ)を読み込みますです。手順は、上記キー入力Oを入力してクリックし、scanf関数、すなわち、キー入力が、バッファの改行、出力YESとラインに残ったが、直前のscanf入力を読み込み、バッファOから文字を読み取りますバッファに残っ改行NOを出力します。入力に対応する(読み取りおよび改行文字が入力され、それぞれ、scanfのを)を2回サイクルを実行します。
まず、我々は書くことができます。
#include <stdio.h>
int main() {
char ch;
while(~scanf("%c", &ch)) {
if(ch == '\n')
continue;
if(ch == 'O')
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
通常出力することができます。
また、この:
#include <stdio.h>
int main() {
char ch[2];
while(~scanf("%s", ch)) {
if(ch[0] == 'O')
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
getchar関数()和にfflush()
#include <stdio.h>
int main() {
char ch;
while(~scanf("%c", &ch)) {
//getchar();
fflush(stdin);
if(ch == 'O')
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
過剰な緩衝液を吸収キャリッジ内GETCHAR()。
アクションにfflush()バッファが空である、にfflush(STDIN)とにfflush(STDOUT)は、標準入力および出力バッファの明確です。
両方の機能は、プログラムの結果のように、通常の操作であってもよいです。
"%cの"
#include <stdio.h>
int main() {
char ch;
while(~scanf(" %c", &ch)) {
if(ch == 'O')
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
スペース、情報へのアクセスがあった前の%Cは、後であれば、直接バッファ・スペースを無視するスペース、キャリッジリターン(プロ試験の前に%cがどんなに多くのスペースとキャリッジリターン入力、使用状況の魔法を発見していません通常出力することができます)。
また、知識ポイントと指摘また、「%* c」は、変数に割り当てていない値をしてchar型の文字を、無視することができます。
取得()
#include <stdio.h>
int main() {
char ch[2];
while(gets(ch)) {
if(ch[0] == 'O')
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
取得()関数は、scanf関数(「%s」は)ブランクが停止した文字列の出会いを読みますが、取得する()関数は読み込むことを除いて、1行の文字列やscanf(「%s」を)読み込みます文字列にはスペースを持つことができます。
さらに、トランスポートバッファ内の文字列を読み取るために()関数は上に除去し、廃棄されます、すなわち、それは輸送余分の最後のバッファはありません。
C ++で入力します
書き込む前に確立されたバイナリコード、バイナリツリーの確立の前置きは、入力CINで、コンソール入力欄が空のツリーを表す場合、結果が適切に機能することができません。その後CINは、スペース、およびcin.getを(読んでないことを学んだ)文字が空白ことができることを、文字を読み込みます。
彼の文字列を読んで、使用済みのgetlineの()をすることができ、構文はgetlineの(CIN、STR)、文字列型変数であるSTRあります。