問題C / C ++入力文字列

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の()をすることができ、構文はgetl​​ineの(CIN、STR)、文字列型変数であるSTRあります。

公開された44元の記事 ウォンの賞賛0 ビュー844

おすすめ

転載: blog.csdn.net/Komatsu_1137/article/details/104055354