. Cプログラミング入門 . (2014) 第14回 −ファイル入出力− 松田七美男 2014 年 7 月 17 日 ファイル入出力 1. 標準入出力を含めて,外部とのデータのやりと りは FILE 構造体 を通じて行うように定められている.実際に は,FILE 構造体へのポインタを使う. ファイル入出力 1. 標準入出力を含めて,外部とのデータのやりと りは FILE 構造体 を通じて行うように定められている.実際に は,FILE 構造体へのポインタを使う. 2. ファイル構造体 (へのポインタ) に関連する関数 fopen(), fclose() fopen() の使い方 . FILE *fp; fp = fopen(ファイル名, モード) . fopen() の使い方 . FILE *fp; fp = fopen(ファイル名, モード) . ファイル名の指定: 直接記述:fopen("filename", ...) ポインタ利用:fopen(fname, ...) char *fname; char fname[80]; fopen() の使い方 . FILE *fp; fp = fopen(ファイル名, モード) . ファイル名の指定: 直接記述:fopen("filename", ...) ポインタ利用:fopen(fname, ...) char *fname; char fname[80]; モード: 読み込み:"r","r+" 書き込み:"w","w+" 追記:"a","a+" 文字(列)入出力関数 . オープンしたファイル(FILE 構造体へのポインタ fp で識別)に対して,文字(列)を読み書きする関 数群がある. . 文字(列)入出力関数 . オープンしたファイル(FILE 構造体へのポインタ fp で識別)に対して,文字(列)を読み書きする関 数群がある. . 読み込み:fgetc(fp), getc(fp), fgets(s,n,fp), ungetc(c,fp), fscanf(fp, ...), fread(„,fp) 文字(列)入出力関数 . オープンしたファイル(FILE 構造体へのポインタ fp で識別)に対して,文字(列)を読み書きする関 数群がある. . 読み込み:fgetc(fp), getc(fp), fgets(s,n,fp), ungetc(c,fp), fscanf(fp, ...), fread(„,fp) 書き込み:fputc(c,fp), putc(c,fp), fputs(s,fp), fprintf(fp,...), fwrite(„,fp) オープンエラーへの対処 FILE *fp; char *fin = "ファイル"; if ( (fp = fopen(fin, "r+") == NULL ) { printf(“Can’t open %s\n”, fin); exit(0); } . オープンエラーへの対処 FILE *fp; char *fin = "ファイル"; 「"ファイル"が存在して,読み書き可能」ではない if ( (fp = fopen(fin, "r+") == NULL ) { printf(“Can’t open %s\n”, fin); exit(0); } . ファイルが適切にオープンできなかった場合には処理を 中止. 特に書き込みは絶対に避けるべき. オープンエラーへの対処 FILE *fp; char *fin = "ファイル"; 「"ファイル"が存在して,読み書き可能」ではない if ( (fp = fopen(fin, "r+") == NULL ) { printf(“Can’t open %s\n”, fin); exit(0); } . ファイルが適切にオープンできなかった場合には処理を 中止. 特に書き込みは絶対に避けるべき. データ喪失の可能性 à ush(fp) データの掃き出し: . 出力のバッファリング . 出力データはバッファリングされており,fprintf(), fputc() などで出力させたつもりでも,実際にはデバイスに出力され .ないことがある. ush(fp) データの掃き出し: . 出力のバッファリング . 出力データはバッファリングされており,fprintf(), fputc() などで出力させたつもりでも,実際にはデバイスに出力され .ないことがある. à fflush(fp) で強制的に掃き出す . ush(fp) データの掃き出し: . 出力のバッファリング . 出力データはバッファリングされており,fprintf(), fputc() などで出力させたつもりでも,実際にはデバイスに出力され .ないことがある. à fflush(fp) で強制的に掃き出す . fp はファイルポインタあるいは標準出力 (. stdout)や標準エラー出力(stderr) .
© Copyright 2024 ExpyDoc