C言語プログラム応用 第13回 2014.7.10 • ファイル処理(第13章 p.290~) – ファイルのオープンとクローズ – ファイルからの読み込み – ファイルへの書き込み • 演習課題13-1 ★ 提出 • 演習課題13-2★ 提出 1 ファイルのオープンとクローズ List 13-1 #include <stdio.h> ファイル名 モード:読込を設定 int main (void) { FILE *fp; fp=fopen(“abc.txt” ,”r”); /* ファイルをオープン*/ if(fp==NULL) printf(“ファイルをオープンできませんでした。¥n”); else{ ・・・・; /*ファイルからの読込などを行う*/ fclose(fp); ファイルをクローズ } return(0); } fopen オープン 返却値 ・ 成功したら ポインタfp ・ 失敗したら 空ポインタ fclose クローズ 返却値 ・ 成功したら 0 ・ 失敗したら EOF EOF については p.198参照 ファイルの読込み FILE *fp; fp=fopen(“ファイル名”,”r”); fscanf(fp, ”%d(書式)” ,&変数); fclose(fp); (キーボードからの読み込み) scanf(”%d(書式)” , &変数); ファイルへの書込み FILE *fp; fp=fopen(“ファイル名”,”w”); fprintf(fp, ”%d(書式)” , 変数); fclose(fp); (ディスプレイへの表示) printf(”%d(書式)” ,変数); ファイルの読み込みと書き込み fscanf(fp, ”%d(書式1)%lf(書式2)・・” ,&変数1,&変数2,・・); 返却値: 入力項目の個数を返す. 入力誤りが発生するとEOFの値を返す. fscanf ( fp, “%d” , &x); fscanf ( fp, “%s%lf%lf” , name, &height, &weight ); fprintf(fp, ”%d(書式1)%lf(書式2)・・” ,変数1,変数2,・・); fprintf ( fp, “%-10s%5.2f%5.2f” , name, height, &weight ); 左詰め10桁 List 13-2 Aiba 160 59.3 Kurata 162 51.6 Masaki 182 76.5 Tanaka 170 60.7 Tsuji 175 83.9 Washio 175 72.5 #include <stdio.h> #include <stdlib.h> int main (void) { FILE *fp; int ninzu = 0; ファイル hw.dat char name[100]; double height, weight; double hsum = 0.0, wsum = 0.0 ; if ( (fp = fopen(“hw.dat” ,”r”)) == NULL ) printf(“ファイルをオープンできません.¥n”); else{ while ( fscanf ( fp, “%s%lf%lf “, name, &height, &weight ) == 3 ) { printf (“%-10s %5.1f %5.1f ¥n”, name , height, weight ); ninzu++; hsum += height; wsum += weight; } printf( “ --------------------------------------¥n”); printf(“平均 %5.1f %5.1f ¥n”, hsum/ninzu, wsum/ninzu); fclose(fp); } return(0);} 演習課題13-1 hw.dat をメモ帳などを使って作成し,List13-2 を実行せよ. ただし,hw.datはソースファイルがあるフォルダに置くこと 実行結果 演習課題13-2 キーボードから,名前,身長,体重を読み込んで,それを ファイル( hw.out )に書き込むプログラムを作成せよ. ファイルに書き込む形式はList 13-2と同様にすること. 実行結果としては,下記のように2名分の入力状況と, hw.outファイルの内容を示せ. 演習課題13-2 ヒント1 #include <stdio.h> #include <stdlib.h> int main (void) { FILE *fp; if ( (fp = fopen(“hw.out” ,”w”)) == NULL ) printf(“ファイルをオープンできません.¥n”); else{ } return(0); } 演習課題13-2 ヒント2 #include <stdio.h> #include <stdlib.h> int main (void) { FILE *fp; int retry; /*続けるか?*/ char name[100]; double height, wieght; if ( (fp = fopen(“hw.out” ,”w”)) == NULL ) printf(“ファイルをオープンできません.¥n”); else{ do{ printf(“名前: ”); printf(“身長: ”); printf(“体重: ”); printf(“続けますか (Yes---1 / No----0) : “); scanf(“%d”,&retry); } while ( ); /* ファイルのクローズ*/ } return(0); }
© Copyright 2024 ExpyDoc