工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C 言語ファイル I/O 完全ガイド: ファイルの作成、オープン、読み書き、クローズ

C 言語ファイル管理の概要

C では、標準ライブラリ stdio.h がディスク上の永続データを扱うための包括的な関数群を提供します。これらのツールをマスターすれば、データの整合性とプログラムの安定性を確保しながら、ファイルを確実に作成、読み取り、書き込み、クローズできます。

主要なファイル操作関数

関数目的
fopen()既存ファイルを開くか新規作成する。
fclose()開いているファイルを閉じ、リソースを解放。
fprintf()フォーマット済みテキストをファイルに書き込み。
fscanf()ファイルからフォーマット済みデータを読み取り。
getc()ファイルから 1 文字取得。
putc()ファイルに 1 文字書き込み。
fgets()1 行全体をバッファに読み込み。
fputs()フォーマットなしで文字列をファイルに書き込み。
fseek()ファイルポインタを指定位置に移動。
ftell()現在のファイルポインタ位置を取得。
rewind()ファイルポインタを先頭にリセット。

ファイルモードの解説

モード説明
"r"読み取り専用でオープン。ファイルが存在しない場合は失敗。
"w"書き込み専用でオープン。既存ファイルは切り詰め、新規作成。
"a"追記モードでオープン。書き込みはファイル末尾に追加。
"r+"読み書き両用でオープン (先頭から)。
"w+"読み書き両用でオープン。既存ファイルは切り詰め。
"a+"読み書き両用でオープン。新規データは末尾に追加。

ファイルの作成

ファイルを作成またはオープンするには、まずファイルポインタを宣言し、目的のファイル名とモードで fopen() を呼び出します:

FILE *fp;
fp = fopen("data.txt", "w");

ファイルが存在しない場合、fopen() が作成します。既に存在する場合、モードに応じて内容が保持または上書きされます。

絶対パス指定も可能:

fp = fopen("D:/data.txt", "w");

ファイル作成ステップのイラスト:

C 言語ファイル I/O 完全ガイド: ファイルの作成、オープン、読み書き、クローズ

C 言語ファイル I/O 完全ガイド: ファイルの作成、オープン、読み書き、クローズ

ファイルのクローズ

すべてのファイル操作が完了したら、必ず fclose() を呼び出してファイルディスクリプタを解放し、バッファをフラッシュします:

fp = fopen("data.txt", "r");
...
fclose(fp);

関数は成功時に 0、エラー時に EOF を返します。プログラム終了時に OS が自動的にファイルをクローズしますが、明示的なクローズがベストプラクティスとされます。

ファイルへの書き込み

書き込み時は、必要に応じて改行文字 (\n) を明示的に追加してください。主な書き込み関数:

例: fputc()

#include <stdio.h>
int main() {
    int i;
    FILE *fptr;
    const char *str = "Guru99 Rocks\n";
    fptr = fopen("fputc_test.txt", "w");
    for (i = 0; str[i] != '\n'; i++) {
        fputc(str[i], fptr);
    }
    fclose(fptr);
    return 0;
}

出力ファイル fputc_test.txt の内容:

C 言語ファイル I/O 完全ガイド: ファイルの作成、オープン、読み書き、クローズ

例: fputs()

#include <stdio.h>
int main() {
    FILE *fp = fopen("fputs_test.txt", "w+");
    fputs("This is Guru99 Tutorial on fputs,", fp);
    fputs("We don't need to use for loop\n", fp);
    fputs("Easier than fputc function\n", fp);
    fclose(fp);
    return 0;
}

結果ファイル fputs_test.txt:

C 言語ファイル I/O 完全ガイド: ファイルの作成、オープン、読み書き、クローズ

例: fprintf()

#include <stdio.h>
int main() {
    FILE *fptr = fopen("fprintf_test.txt", "w");
    fprintf(fptr, "Learning C with Guru99\n");
    fclose(fptr);
    return 0;
}

結果ファイル fprintf_test.txt:

C 言語ファイル I/O 完全ガイド: ファイルの作成、オープン、読み書き、クローズ

ファイルからの読み取り

データ読み取りの主要関数は 3 つ:

以下は fprintf_test.txt を 3 つの方法すべてで読み取る完全なデモ:

#include <stdio.h>
int main() {
    FILE *fp;
    char buffer[50], c;
    fp = fopen("fprintf_test.txt", "r");
    printf("----read a line----\n");
    fgets(buffer, 50, fp);
    printf("%s\n", buffer);
    fclose(fp);
    fp = fopen("fprintf_test.txt", "r");
    printf("----read and parse data----\n");
    char str1[10], str2[2], str3[20], str4[2];
    fscanf(fp, "%s %s %s %s", str1, str2, str3, str4);
    printf("Read String1 |%s|\n", str1);
    printf("Read String2 |%s|\n", str2);
    printf("Read String3 |%s|\n", str3);
    printf("Read String4 |%s|\n", str4);
    fclose(fp);
    fp = fopen("fprintf_test.txt", "r");
    printf("----read the entire file----\n");
    while ((c = fgetc(fp)) != EOF) {
        putchar(c);
    }
    fclose(fp);
    return 0;
}

プログラム出力:

----read a line----
Learning C with Guru99
----read and parse data----
Read String1 |Learning|
Read String2 |C|
Read String3 |with|
Read String4 |Guru99|
----read the entire file----
Learning C with Guru99

C 言語ファイル I/O 完全ガイド: ファイルの作成、オープン、読み書き、クローズ

getc と putc による文字単位インタラクティブ I/O

この最小例は、ユーザー入力を読み取り、ファイルに書き込み、再度読み戻す流れを示します:

#include <stdio.h>
int main() {
    FILE *fp;
    int c;
    printf("File Handling\n");
    fp = fopen("demo.txt", "w");
    while ((c = getchar()) != EOF) {
        putc(c, fp);
    }
    fclose(fp);
    printf("Data Entered:\n");
    fp = fopen("demo.txt", "r");
    while ((c = fgetc(fp)) != EOF) {
        putchar(c);
    }
    fclose(fp);
    return 0;
}

実行例:

C 言語ファイル I/O 完全ガイド: ファイルの作成、オープン、読み書き、クローズ

C 言語ファイル I/O 完全ガイド: ファイルの作成、オープン、読み書き、クローズ

ポイント

C言語

  1. I/Oカードとは? 仕組みと重要性を解説
  2. Raspberry Pi I/Oブレイクアウトケーブルとプラグボードアダプターの自作:ステップバイステップガイド
  3. Apacer、グローバル展開CV110-SD & CV110-MSD高性能フラッシュカードを発表
  4. Apacer、産業用SV250 SSD発表:読取560MB/s、書込520MB/s
  5. acceed、統合I/Oモジュール「EDAM-4200シリーズ」を発表-スケーラブルで信頼性の高いデータ通信
  6. C# 変数とプリミティブデータ型:完全マスターガイド
  7. C言語入出力(I/O)マスター:scanf()とprintf()徹底解説
  8. C言語 ファイル入出力: fopen, fprintf, fread, fseek をマスターする
  9. C言語ファイルI/O完全ガイド:作成、オープン、管理の実践
  10. C言語ヘッダーファイルの理解:種類、使い方、ベストプラクティス
  11. PythonファイルI/O:ファイル操作、読み書き、管理のマスター