3 Lesson 8-2 データをまとめて管理する1

3.1 問題

Lesson 8-2
音楽CD 10枚に入っている曲 (各CDには6曲) を入力し、テキストファイルに記録するプロ グラムを作成しなさい。ただし、作成するテキストファイル(CDdata.txt)は次の通りとし ます。
	CD1 title: Zokkon C GENGO
	Artist: Hoge Maru
	song1: Ikeike hensuu
	song2: Hairetu BANZAI
	  ・
	  ・
	  ・
	song6: Saraba Kozoutai
	CD2 Title: Love Love C
	Artist: etc etc
プログラム中のCDデータの取り扱いには、構造体を使うこと。

3.2 プログラム例

この問題のプログラム例 (CD.c) をリスト2に示す。

リスト2:CDのデータをファイル に出力

01: #include <stdio.h>
02: 
03: /* ---- 構造体 ---- */
04: struct cd_data{
05:   char title[64];    /* タイトル名を入れる配列       */
06:   char artist[64];   /* アーティスト名を入れる配列    */
07:   char song[6][64];  /* 曲名をいれる配列 6曲まで入力可 */
08: };
09: 
10: /* ---- プロトタイプ宣言 ---- */
11: int data_input(struct cd_data CD[]);
12: int write_file(struct cd_data CD[]);
13: 
14: /*==================================================================*/
15: /*           メイン関数                                              */
16: /*==================================================================*/
17: int main(void){
18:   struct cd_data CD[10];
19: 
20:   data_input(CD);           /* CDのデータを入れる関数呼び出し         */
21:   write_file(CD);           /* CDのデータをファイル出力する関数呼び出し */
22: 
23:   return 0;
24: }
25: 
26: /*==================================================================*/
27: /*           データの入力                                             */
28: /*==================================================================*/
29: int data_input(struct cd_data CD[]){
30:   int i,j;
31: 
32:   for(i=0; i<10; i++){
33: 
34:     printf("\n--------------------------------------------------\n");
35:     printf("%d番目のCDについてです。\n", i+1);
36: 
37:     printf("タイトル?\t");
38:     fgets(CD[i].title,64,stdin);     /*  空白を含めてタイトル読み込み */
39: 
40:     printf("\nアーティスト?\t");
41:     fgets(CD[i].artist,64,stdin);    /*  空白を含めてアーティスト読み込み */
42: 
43:     for(j=0; j<6; j++){
44:           printf("\n\t%d番目の曲目?\t",j+1);
45:       fgets(CD[i].song[j],64,stdin);  /*  空白を含めて曲名読み込み */
46:     }
47: 
48:   }
49: 
50:   return 0;
51: 
52: }
53: 
54: /*==================================================================*/
55: /*           データのfile出力                                        */
56: /*==================================================================*/
57: int write_file(struct cd_data CD[]){
58:   FILE *wfile;
59:   int i,j;
60: 
61:   wfile = fopen("CDdata.txt","w");    /* 書き込み用fileのオープン */
62: 
63: 
64:   /* ---- 10個のCDタイトルの書き込み ---- */
65:   for(i=0; i<10; i++){
66: 
67: 
68:     fprintf(wfile, "CD%d Title: %s", i+1, CD[i].title); /* タイトル */
69:     fprintf(wfile, "Artist: %s", CD[i].artist);         /* アーティスト*/
70:  
71:     for(j=0; j<6; j++){                                 /* 曲名 */
72:           fprintf(wfile,"song%d: %s", j+1, CD[i].song[j]);
73:     }
74: 
75:   }
76: 
77:   fclose(wfile);                     /* 書き込み用のファイルのクローズ */
78: 
79:   return 0;
80: 
81: }



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成17年6月6日


no counter