C言語の初歩

第3回・入力と出力

1.入力
なんらかの処理をするときに、決まった値しか使えないと、とても使えるプログラムとは言えないです。
例えば、関数のxを入力するとyを出力してくれるプログラムを作りたいとき、y=2x+1の値しか計算できないプログラムよりは、y=ax+bのaとbに自由に値を入れて計算できるプログラムのほうが汎用性が高いです。
ここでは、その入力のために必要なことを学びます。

入力には、scanfというものを使います。
printfと、なんか似てますね。
文字を入力する際には
scanf("%(特定の半角英字)",&(値を保存したい変数名));
といった書き方をします。
(特定の半角英字)、(値を保存したい変数名)は、プログラムによって書く言葉が変わります。
(特定の半角英字)には、整数を入力したいときにはd、実数を入力したいときにはf、文字一文字を入力したいときにはcをいれます。

そして、(値を保存したい変数名)のところには、文字通り、入力した数字や文字を保存したいところの名前をいれます。
例えば、xというところに入力した値を入れたければx、seisuuというところに入力した値をいれたければseisuuと書きます。
scanfは、慣れるまでは「&」を忘れるミスが出やすいので、注意しましょう。

2.printfについて追加
前回、printfでは文字を出力するということを学びました。
ただし、前回の扱った内容では、同じ文字を出力することしかできません。
なんらか計算した値を出力したい場合には、「この値について出力してください」ということを指示しなければなりません。
そこ登場するのが
printf("%(特定の半角英字)",(出力したい値の変数名));
という書き方です。

(特定の半角英字)は、scanfと同じように、整数を出力したいときにはd、実数を出力したいときはf、文字一文字を出力したいときにはcをいれます。
また、%fについては、その前に数字を入れることで、出力する範囲を指定できます。
指定しない場合は、小数点以下6桁まで出力されます。

では、プログラムを見てみましょう。
プログラム例(io.c)
1: #include<stdio.h>
2: 
3: int main(){
4:    char moji;
5:    int seisuu;
6:    float jissuu;
7:	
8:    printf("半角英語を一文字入力してください。\n");
9:    scanf("%c",&moji);
10:   printf("入力された文字は%cです\n\n",moji);
11:
12:   printf("整数を入力してください。あまり大きな数・小さな数は入力しないように\n");
13:   scanf("%d",&seisuu);
14:   printf("入力された整数は%dです。\n\n",seisuu);
15:
16:   printf("実数を入力してください。\n");
17:   scanf("%f",&jissuu);
18:   printf("入力された実数は%fです。\n",jissuu);
19:   printf("表示のしかたによっては%20.5fというように表示できます。\n",jissuu);
20:   printf("左寄せには-を使えば%-10.5fというように表示できます。\n",jissuu);
21
22:   return 0;
23: }

1行目~3行目はお決まりのものです。
4行目~6行目は、使う変数を用意しています。
変数については次回書く予定ですが、char・int・floatは、その変数がどんなデータであるのかを決めるためのものです。
また、moji・seisuu・jissuuは、変数の名前となります。
扱うときには、この変数の名前を使って数字を見たり、計算をしたりします。
そして、8行目~20行目までは、文字を入力し、出力するための命令です。
10行目と14行目で\nを二つ書いているのは、出力した際に見やすくするためだと思ってください。
%fで出力するときには、19行目のように前に数字を入れて、出力の仕方を変えることができます。
「.」より前の部分の数字は(小数点も含んでの)全体の長さを指定し、「.」より後ろの部分の数字は小数点以下の長さをしていします。
%20.5fは、小数点も入れて全体で20の長さ、小数点以下は5桁だけ出力しろということですね。
なので、入力する数字によっては、上のほうの桁で使っていない部分がスペースで出力されます。
それでは見栄えが悪いということで、20行目のように前に「-」をつけて、全体を左寄せにすることができます。
そして、22行目~23行目は、いつもお決まりのシメです。

printfやscanfの「%○」の部分は、他にもいろいろとあるのですが、とりあえず%dと%fと%cを覚えることが大事だと思います。
入出力には、他にもいろいろなやり方があるのですが、まずは今回説明した2つについて覚えましょう!

○練習問題1
プログラム例で紹介した「io.c」を作り、実行してみましょう。