TOP - C言語 - stdio.h - fopen()

ファイルを開きます。

戻り値1 = fopen(引数1 , 引数2)

戻り値1 : FILE *
          実行が成功した場合   : 開いたファイルのファイル・ポインタ
          エラーが発生した場合 : NULL
引数1   : char *
          ファイル名
引数2   : char *
          モードを指定する文字列

              「r」
                  読み込み用
                  実行時の現在位置はファイルの先頭

              「r+」
                  読み書き用
                  実行時の現在位置はファイルの先頭

              「w」
                  書き込み用
                  ファイルが存在しない場合はファイルを作成
                  ファイルが存在する場合はファイルサイズ0に切り捨て
                  実行時の現在位置はファイルの先頭

              「w+」
                  読み書き用
                  ファイルが存在しない場合はファイルを作成
                  ファイルが存在する場合はファイルサイズ0に切り捨て
                  実行時の現在位置はファイルの先頭

              「a」
                  書き込み用
                  ファイルが存在しない場合はファイルを作成
                  実行時の現在位置はファイルの末尾

              「a+」
                  読み書き用
                  ファイルが存在しない場合はファイルを作成
                  実行時の現在位置はファイルの末尾


(例)
#include <stdio.h>

int main ()
{
    char s[20] = "123456789";
    char *sp;
    int nret;
    FILE *fp;

    fp = fopen("test_fopen_w.txt", "w");
    nret = fputs(s, fp);
    printf("実行結果「w」 : %d\n", nret);
    fclose(fp);

    fp = fopen("test_fopen_w.txt", "r");
    sp = fgets(s, 10, fp);
    printf("実行結果「r」 : %s\n", sp);
    fclose(fp);

    fp = fopen("test_fopen_w.txt", "r+");
    sp = fgets(s, 10, fp);
    printf("実行結果「r+(読み込み)」 : %s\n", sp);
    nret = fputs("0123", fp);
    printf("実行結果「r+(書き込み)」 : %d\n", nret);
    fclose(fp);

    fp = fopen("test_fopen_w.txt", "w+");
    sp = fgets(s, 10, fp);
    printf("実行結果「w+(既存ファイル有り)」 : %s\n", sp);
    nret = fputs(s, fp);
    printf("実行結果「w+」 : %d\n", nret);    
    fclose(fp);

    fp = fopen("test_fopen_w.txt", "a");
    nret = fputs("abc", fp);
    printf("実行結果「a」 : %d\n", nret);
    fclose(fp);

    fp = fopen("test_fopen_w.txt", "a+");
    sp = fgets(s, 20, fp);
    printf("実行結果「a+(読み込み)」 : %s\n", sp);
    nret = fputs("0123", fp);
    printf("実行結果「a+(書き込み)」 : %d\n", nret);
    fclose(fp);

    fp = fopen("test_fopen_w.txt", "r");
    sp = fgets(s, 20, fp);
    printf("実行結果「a+」 : %s\n", sp);
    fclose(fp);

    return 0;
}

実行結果
実行結果「w」 : 9
実行結果「r」 : 123456789
実行結果「r+(読み込み)」 : 123456789
実行結果「r+(書き込み)」 : 4
実行結果「w+(既存ファイル有り)」 : (null)
実行結果「w+」 : 9
実行結果「a」 : 3
実行結果「a+(読み込み)」 : (null)
実行結果「a+(書き込み)」 : 4
実行結果「a+」 : 123456789abc0123


Copyright(C) 2006-2012 CLAYPOT. All Rights Reserved.