SAK 図書館
パソコン基礎知識 C 言語編 (その八) 標準ファイル I/O、読み込み、書き込み
■標準ファイル I/O (stdio.h) // ファイルオープン fno = fopen(filename, mode); | | |_ "r" 読み込み | | "w" 書き込み | | "a" 追加書き込み | | "rb" バイナリ読み込み | |_ ファイル名 |_ FILE * のポインタ // ファイルクローズ fclose(fno); |_ FILE * のポインタ // EOF 判定 rcd = feof(fno); | |_ FILE * のポインタ |_ end of file = -1 // 1 文字読む a = fgetc(fno); | |_ FILE * のポインタ |_ char // 文字列を読む fgets(s, 5, fno); | | |_ FILE * のポインタ | |_ n - 1 が読まれる (この例では 4) |_ char[n + 1] // 書式文字列を読む fscanf(fno, "%d,%s\n", &i, &s); | | | |_ %s に相当する格納変数 | | |_ %d に相当する格納変数 | |_ 読み取り書式 |_ FILE * のポインタ // 1 文字書く fputc(a, fno); | |_ FILE * のポインタ |_ char // 文字列を書く fputs(s, fno); | |_ FILE * のポインタ |_ char[n] // 書式文字列を書く fprintf(fno, "%d,%s", i, s); | | | |_ %s に相当する変数 | | |_ %d に相当する変数 | |_ 書き込み書式 |_ FILE * のポインタ // その他 size_t fread(void _FAR *__ptr, size_t __size, size_t __n, FILE _FAR *__stream); size_t fwrite(const void _FAR *__ptr, size_t __size, size_t __n, FILE _FAR *__stream); int fseek(FILE _FAR *__stream, long __offset, int __whence); ■読み込みサンプルコード ・テキストファイルからの読み込みは、次のようにする。 text.txt の内容は、「012,abcあいう」と仮定する。 /* ======================================================================== ファイル読み込みテスト ======================================================================== */ // インクルードヘッダ #include <stdio.h>; // 関数プロトタイプ宣言 int main(void); /* ======================================================================== メイン ======================================================================== */ int main(void) { FILE *fno; int i; char a; char s[2000]; printf("ファイル読み込みテスト\n\n"); // 1 文字読む printf("-- fgetc --\n"); if ((fno = fopen("g:\\tmp\\test.txt", "r")) == NULL) { return(-1); } while (!feof(fno)) { a = fgetc(fno); putchar(a); } fclose(fno); printf("\n"); // 文字列を読む printf("-- fgets --\n"); if ((fno = fopen("g:\\tmp\\test.txt", "r")) == NULL) { return(-1); } if (!feof(fno)) { fgets(s, 5, fno); // 5 - 1 の 4 文字読まれる printf("%s\n\n", s); } fclose(fno); // 書式文字列を読む printf("-- fscanf --\n"); if ((fno = fopen("g:\\tmp\\test.txt", "r")) == NULL) { return(-1); } while (!feof(fno)) { fscanf(fno, "%d,%s\n", &i, &s); printf("%d - %s\n\n", i, s); } fclose(fno); printf("-- 終了 --\n"); return(0); } ■書き込みサンプルコード ・テキストファイルへの書き込みは、次のようにする。 text2.txt へ出力している。 /* ======================================================================== ファイル書き込みテスト ======================================================================== */ // インクルードヘッダ #include <stdio.h>; // 関数プロトタイプ宣言 int main(void); /* ======================================================================== メイン ======================================================================== */ int main(void) { FILE *fno; int i; char a; char s[2000]; printf("ファイル書き込みテスト\n\n"); // ファイルオープン printf("-- fputc --\n"); if ((fno = fopen("g:\\tmp\\test2.txt", "w")) == NULL) { return(-1); } // 1 文字書く a = 'A'; fputc(a, fno); putchar(a); a = 'B'; fputc(a, fno); putchar(a); a = 'C'; fputc(a, fno); putchar(a); a = '\n'; fputc(a, fno); putchar(a); printf("\n"); // 文字列を書く printf("-- fputs --\n"); strcpy(&s, "あいうえお\n"); fputs(s, fno); printf("%s\n", s); // 書式文字列を書く printf("-- fprintf --\n"); i = 123; strcpy(&s, "あいうえお\n"); fprintf(fno, "%d,%s", i, s); printf("%d - %s\n", i, s); // ファイルクローズ fclose(fno); printf("-- 終了 --\n"); return(0); } ■パソコン基礎知識 C 言語編資料
■プログラミング言語資料
■パソコン基礎知識 ハード編資料
■パソコン基礎知識 画像編資料
■パソコン基礎知識 Windows 編資料
■コンピュータシステム導入編資料