キーボードから値を入力するときに使う scanf関数は、これまでの Tips でも使ってきました。
最初のうちは使い方が分かりにくいので、今回は例題で説明します。
次回は電卓プログラムに発展させることにします。
int scanf( 書式を指定する文字列, ・・・ )
scanf( "%lf, %lf", &x, &y )
retc = scanf( "%lf, %lf", &x, &y );
if( retc != 2 ) { //エラー処理 }
わざわざ retc に受け取らなくても、戻り値を直接判定すると、次のように短く書けます。
if( scanf( "%lf, %lf", &x, &y ) != 2 ) { //エラー処理 }
#include <stdio.h> #include <stdlib.h> main() { double x, y; printf( "2つの数の和を求めます(x, yを指定): " ); if( scanf( "%lf, %lf", &x, &y ) != 2 ) { printf( "指定が正しくありません\n" ); exit( 1 ); } printf( "x + y = %g\n", x + y ); }
(今回のクイズ)
次のような入力をしたい場合、scanf 呼び出しはどのように書けばよいでしょう?
(1) char msg[24]; に文字列を入力する
(2) char moji; にひと文字を入力する
(3) int yy, mm, dd; の各変数に10進の整数を入力する
(答えは、次回のC言語の Tips で ・・・)
[ 関連記事 ] 入力時に要らないデータをスキップする
(以下は scanf の利用例の参考に) 表示用マクロ,
曜日を調べる,
最大公約数を求める,
数字当てゲーム
四捨五入
void prtQue() { int i; printf( "(head:%d,tail:%d) ", head, tail ); for( i = head; i < tail; i++ ) printf( "[%d]%d ", i, queue[i] ); printf( "\n" ); }