SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

パソコン基礎知識 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 編資料
■コンピュータシステム導入編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK