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; }