fflush(stdin)を覚えた。

パソコン甲子園に向けて特訓中。

fflush()

バッファにたまっているデータを吐き出す。

つかいかた

getchar()(scanf()とかも)は、連続で使うと改行まで配列に格納しちゃう。

char a, b, c;
a = getchar();
b = getchar();
c = getchar();

/* 入力:
A
B
C
*/

/* 出力:
A

B
*/

Bに改行(\n)が入っちゃってます。

char a, b, c;
a = getchar();
fflush(stdin);
b = getchar();
fflush(stdin);
c = getchar();
fflush(stdin);

これでスッキリ

123
456
789

のような入力を受け取って、1文字ずつ3x3の配列に格納するプログラム。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int i, j;
	char input;
	int box[3][3];
	for( i=0; i<3; i++ ){
		for( j=0; j<3; j++ ){
			// 一文字読み取って
			input = getchar();
			// int型に変換して格納
			box[i][j] = atoi(&input);
		}
		fflush(stdin);	// バッファをクリア
	}

	// 表示
	for( i=0; i<3; i++ ){
		for( j=0; j<3; j++ ){
			printf("%d", box[i][j]);
		}
		putchar('\n');
	}
	
	return 0;
}