第7回 ファイルと構造体

基本課題

ファイル

g1) まず,kansou.txtというファイルにこの授業の感想を書いて準備しておく。そして,そのファイルの中身(=感想)を表示するプログラムを作って結果を確かめなさい。 ※感想を書いたファイルも提出してください。

【ポイント】 関数 fopen,fclose と getc(またはfgetc),putchar を用いる。

★g2) ユーザが指定したファイル名のファイルを新しく作成し,そのファイルに1から1000までの整数を書き込むプログラムを作成しなさい.

【ポイント】 関数 fprintf を用いる。

構造体

★g3) 年,月,日からなる構造体を定義し,キーボードから値を読み込み,表示するプログラムを作成しなさい。

struct date {
    int year;
    int month;
    int day;
};

★g4) x座標,y座標からなる構造体pointを定義し,その変数を3つ作成しなさい。キーボードから三角形の3つの頂点の座標を読み込み,三角形の重心の座標を求め表示しなさい。

struct point {
    double x;
    double y;
};

g5) まず,商品名(文字列),価格(整数),数量(整数)をメンバとする構造体を定義する。次に,構造体を要素とする長さ10の配列を作成し,中身を適当な値で初期化する。キーボードから整数を読み込み,その価格以下のデータを探してすべて表示するプログラムを作成しなさい。

struct item {
    char name[20];
    int  price;
    int  quantity;
};
struct item item_list[10] = { /* 初期化 */ };

応用課題

gx1) コマンドラインで与えられたファイル名のファイルの内容を画面に表示するC言語のプログラムを作成しなさい(UNIXのcat,Windowsのtype)。このプログラムを実行するためには,「コマンドプロンプト」からプログラムを実行しなければならない。

【ポイント】 プログラム実行時のコマンドラインの引数は,メインの引数として取得することができる。

int main(int argc, char *argv[]);

このargcに,コマンドライン引数の個数,argvにそれぞれの引数の文字列が得られる。

int main(int argc, char *argv[])
{
    int i;
    for (i = 0; i < argc; i++)
        printf("%s\n", argv[i]);
}

gx2) ユーザが指定したファイル名の英文テキストファイルを開き,そこに含まれている単語の平均長(平均文字数)を求めるプログラムを作成せよ。ただし,単語の定義は,アルファベットが連続している文字列とする。

gx3) g4)の構造体変数へのポインタを引数にとり,キーボードから座標値をその変数に代入する関数を作成せよ。

gx4) g5)の構造体変数へのポインタを引数にとり,キーボードから読み込んだ商品名,価格,数量をその変数に代入する関数と,構造体に格納された値を表示する関数を作成しなさい。

gx5) まず,氏名(文字列),年齢(整数),身長(実数)からなる構造体を定義しなさい。そして,その構造体の配列に10人分のデータをキーボードから読み込み,それをheight.txtファイルに格納するプログラム(gx5a.c)を作成しなさい。また,その10人分のデータを読み出して表示するプログラム(gx5b.c)も作成しなさい。

発展課題

gz1) 最後の課題である。fz1)bz1)を組み合わせて,RPGを作成してみなさい。しかし,それだけでは肝心の「経験値」「レベルアップ」がないのでそれらを実現するとよいだろう。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS