目次
以下の内容のファイルを作り、test3.c として保存して下さい。
/* Program "test3.c" --- 端末との入出力 */ #include <stdio.h> int main(void) { int x; double y; char str[256]; /* 整数の入力 */ printf("input int>"); scanf("%d", &x); /* 浮動小数点(double)の入力 */ printf("input double>"); scanf("%lf", &y); /* 文字列の入力 */ printf("input string>"); scanf("%s", str); /* 入力されたデータの表示 */ printf("int=%d \ndouble=%f \nstr=%s\n", x, y, str); return 0; }
ソースプログラムtest3.cをコンパイルし、実行して下さい。
実行すると、キーボードからの入力を受け付けます。画面にでる指示に従って、整数、小数、文字列を入力して下さい。以下は、実行例です(太字が入力文字)。
./test3 input int>123 input double>999.876 input string>NAMIHEI int=123 double=999.876000 str=NAMIHEI
C言語によるプログラムでは、printf(), scanf()関数を用いて端末に対する入出力を行なうことができます。以下に、これらの関数の使用方法を示します。
printf(), scanf()の使い方 1. stdio.hをインクルードしなくてはならない。(#include<stdio.h>を書く) 2. printf( FORMAT, 変数1, 変数2, …) 例) 整数x、浮動小数点y、文字'R'、文字列"TARAKO"を出力する int x; double y; printf("int=%d, double=%f, character=%c, string=%s\n", x, y, 'R', "TARAKO"); 注) 「%?」の部分に変数の内容を埋め込むことができる ?は変数の種類によって異なる 3. scanf( FORMAT, &変数1, &変数2, …) 例) 浮動小数点(double)を変数xに入力する dobule x; scanf("%lf", &x); 例) 文字列を変数strに入力する char str[256]; scanf("%s", str); 注) 文字列の場合「&」はいりません 4. FORMATについて詳しくは、こちらのサイト等やmanを参照 5. 文字型定数の表現方法 ◎ 一文字を表す時... シングルクォーテーション 例) 'a' ◎ 文字列を表す時... ダブルクォーテーション 例) "hoge"
練習課題その2
サンプルプログラムtest3.cを参考にして、自分の名前と年齢等を入力し、それを画面に表示するプログラムを作成してみましょう。
練習問題2の回答例
以下の内容のファイルを作り、test4.c として保存してコンパイルして下さい。
/* Program "test4.c" --- ファイルへの出力 */ #include <stdio.h> #include <math.h> #include <stdlib.h> int main(void) { int n; double x, y, z; FILE *fp; if( (fp = fopen("result.dat", "w")) == NULL ) { printf(" *** file open error *** \n"); exit(1); } for( n = 1; n <= 10; n++) { x = n; y = sqrt( x ); z = log( x ); fprintf( fp, " x = %lf, x^0.5 = %lf, log(x) = %lf\n", x, y, z ); } fclose( fp ); return 0; }
エラーがなければ、result.datというファイルができているはずです。
lsコマンドでファイルの有無を確認して下さい。コマンドでこのファイルの中身を表示して下さい。以下の内容であれば、プログラムは正しく動いています。
x = 1.000000, x^0.5 = 1.000000, log(x) = 0.000000 x = 2.000000, x^0.5 = 1.414214, log(x) = 0.693147 x = 3.000000, x^0.5 = 1.732051, log(x) = 1.098612 x = 4.000000, x^0.5 = 2.000000, log(x) = 1.386294 x = 5.000000, x^0.5 = 2.236068, log(x) = 1.609438 x = 6.000000, x^0.5 = 2.449490, log(x) = 1.791759 x = 7.000000, x^0.5 = 2.645751, log(x) = 1.945910 x = 8.000000, x^0.5 = 2.828427, log(x) = 2.079442 x = 9.000000, x^0.5 = 3.000000, log(x) = 2.197225 x = 10.000000, x^0.5 = 3.162278, log(x) = 2.302585
C言語では、ファイルに対しても端末の場合と同様にして入出力を行なうことができます。
サンプルプログラムtest4.cを例に、その方法を説明します。
FILE *fp; if( (fp = fopen("result.dat", "w")) == NULL ) { printf(" *** file open error *** \n"); exit(1); }
fopen()は、ファイルオープンに失敗するとNULLという値を返します。この例では、if文で、NULLが返ったかどうかを判定し、もしそうならexit()関数でプログラムを終了させています。
また、この関数を使うためstdlib.hをincludeしています。
fprintf( fp, " x = %lf, x^0.5 = %lf, log(x) = %lf\n", x, y, z );
fclose( fp );
キーボードから入力した自分のプロフィールをファイルに保存するプログラムを作成せよ
1. プロフィール(名前、年齢、出身、その他)をファイル myprofile.dat に保存するプログラムを、test3.c、test4.cを参考に作って下さい。
2. 終った人は、保存されたプロフィールファイルを読み込んで、画面に表示するプログラムを作ってみましょう。
ヒント) ファイルを読み込むには…
◎fopen()のモードに "r"を指定する
◎fscanf()をscanf()のように使用する
(ファイルポインタの指定は必要です)
ファイルへのデータ書き出しプログラムの回答例
ファイルからのデータ読み出しプログラムの回答例