キーボード入力の場合,書式付入力の
scanf()という関数を使う方法が最も簡単である.こ
の関数の引数は,ポインター
3で,キー
ボードからのデータを入れる変数のアドレスを指定する.ポインターだのアド
レスだのと面倒なことが多いが,そんなことが分からなくても,キーボードからデータの
入力は可能なので安心してよい.
標準入力(キーボード)からデータを読み込んで,それを変数hogeに代入する場合,
scanf("%lf",&hoge);
と書けばよい.これは,
- scanf()は,キーボードからデータを入力するための関数.
- %lfは入力データが倍精度実数を表す.
- 変数hogeはデータの格納先を表す変数である.変数の前に&を付ける
ことを忘れてはならない.
というようなことを表している.図
2のような感じである.
図 2:
キーボードからデータを変数に取り込むscanf関数の意味
|
キーボードからのデータの入力でも型を指定する必要がある.このようにコンピューター
プログラムでは型というものが重要となる.これは,データをメモリーに格納する方法をプログラ
マーが指定する必要があるからである.これまで,使ってきた型指定の方法を表
2にまとめる.ただし,倍精度実数で,非常に大きな数値や小さい
数値の場合指数表示(%e)を使う.
表を見て分かると降り,文字列は少し複雑である.幸いなことに,本講義では文字列を使
うことはほとんどないので,この部分は余り気にしなくてよい.
表 2:
型に依存する変数定義や入出力
|
整数 |
倍精度実数 |
文字 |
文字列 |
変数 |
int hoge |
double hoge |
char hoge |
char hoge[256] |
入力 |
scanf("%d",&hoge) |
scanf("%lf",&hoge) |
scanf("%c",&hoge) |
scanf("%s",hoge) |
出力 |
printf("%d",hoge) |
printf("%f",hoge) |
printf("%c",hoge) |
printf("%s",hoge) |
|
|
printf("%e",hoge) |
|
|
データを入力する場合,データを入れた後に完了を示す
[Enter]キーを押す.この
[Enter]キーを示す文字'
\n'も読み込まれようとして,悪さ
をすることがある.この,改行コード'
\n'を読み捨てる必要がある.
それを行うために,教科書(p.335)には3通りの方法(p.337)を示している.
- 数字を読み込んだあと,%*cで改行文字を読み捨てる.
- 数字を読み込んだあと,getchar()で1文字読み捨てる.
- 数字を読み込んだあと,gets()で残りの文字列を全て読み捨てる.
どれも一長一短がある.諸君が作成するプログラムは,諸君自身でしか使わないので,入
力の処理にこだわらない方がよい.へんなデータを入れて,プログラムがクラッシュして
も損害は無いからである.そこで,本講義では最も簡単な,最初の方法をとることにする.
すなわち,キーボードから実数を読み込んで,変数hogeに代入する場合,
scanf("%lf%*c",&hoge);
と書く.
リスト
2にいろいろな型のデータを読み込んで,表示するプログラム
を示す.このプログラムが理解できれば,コンソール入出力の基本はOKである.
1 #include <stdio.h>
2
3 int main(void){
4 int i;
5 double d;
6 char c;
7 char s[256];
8
9 scanf("%d%*c",&i);
10 scanf("%lf%*c",&d);
11 scanf("%c%*c",&c);
12 scanf("%s%*c",s);
13
14 printf("\n\n");
15
16 printf("%d\n",i);
17 printf("%f\n",d);
18 printf("%c\n",c);
19 printf("%s\n",s);
20
21 return 0;
22
23 }
- [練習1]
- キーボードから角度[deg]を読み込んで,三角関数
(
)の値を表示するプログラムを作成せ
よ.出力する三角関数の値は,1行に表示しタブ区切りとすること.
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成18年6月6日