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

C ファイル I/O:ファイルの作成、オープン、読み取り、書き込み、およびクローズ

C ファイル管理

ファイルを使用して、大量の永続データを格納できます。他の多くの言語と同様に、「C」は次のファイル管理機能を提供します。

<オール>
  • ファイルの作成
  • ファイルを開く
  • ファイルの読み取り
  • ファイルへの書き込み
  • ファイルを閉じる
  • 以下は、「C」で利用可能な最も重要なファイル管理機能です。

    関数 目的 fopen () ファイルの作成または既存のファイルを開くfclose () ファイルを閉じるfprintf () ファイルへのデータ ブロックの書き込みfscanf () ファイルからのブロック データの読み取りgetc () ファイルから 1 文字を読み取りますputc () 1 文字をファイルに書き込みますgetw () ファイルから整数を読み取りますputw () ファイルへの整数の書き込みfseek () ファイル ポインタの位置を指定された場所に設定しますftell () ファイル ポインタの現在位置を返しますrewind () ファイルポインタをファイルの先頭に設定します


    このチュートリアルでは、次のことを学びます-

    ファイルの作成方法

    ファイルを操作するときはいつでも、最初のステップはファイルを作成することです。ファイルは、データが保存されるメモリ内のスペースに他なりません。

    次の構文が使用される「C」プログラムでファイルを作成するには、

    FILE *fp;
    fp = fopen ("file_name", "mode");
    

    上記の構文では、ファイルは標準ライブラリで定義されているデータ構造です。

    fopen は、ファイルを開くために使用される標準関数です。

    fp は、タイプ ファイルを指すファイル ポインタです。

    ファイルを開くか作成するときはいつでも、そのファイルで何をするかを指定する必要があります。 「C」プログラミングのファイルは、読み取り/書き込み目的で作成または開くことができます。モードは、以下に示す目的のいずれかでファイルを開くかどうかを指定するために使用されます。以下は、ファイルの操作中に使用できる「C」プログラミングのさまざまなタイプのモードです。

    ファイル モード 説明 r読み取り用にファイルを開きます。ファイルが読み取りモードの場合、ファイルがシステム上に既に存在する場合、データは削除されません。 w書き込み用にファイルを開きます。ファイルが書き込みモードの場合、ファイルがまったく存在しない場合は、新しいファイルが作成されます。ファイルがシステムに既に存在する場合、ファイル内のすべてのデータは切り捨てられ、書き込み目的で開かれます。a
    追加モードでファイルを開きます。ファイルが追加モードの場合、ファイルが開かれます。ファイル内のコンテンツは変更されません.r+ 最初から読み書きできるように開くw+読み書きできるように開く、ファイルを上書きするa+読み書きできるように開く、ファイルに追加する

    指定された構文では、ファイル名とモードは文字列として指定されるため、常に二重引用符で囲む必要があります。

    例:

    #include <stdio.h>
    int main() {
    FILE *fp;
    fp  = fopen ("data.txt", "w");
    }
    

    出力:

    コードを保存したフォルダと同じフォルダにファイルが作成されます。

    ファイルを作成するパスを指定できます

    #include <stdio.h>
    int main() {
    FILE *fp;
    fp  = fopen ("D://data.txt", "w");
    }

    ファイルを閉じる方法

    ファイルに対する操作が終了したら、常にファイルを閉じる必要があります。これは、ファイルへのコンテンツとリンクが終了していることを意味します。これにより、ファイルへの偶発的な損傷を防ぐことができます。

    「C」は、ファイルを閉じる操作を実行する fclose 関数を提供します。 fclose の構文は次のとおりです。

    fclose (file_pointer);
    

    例:

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

    fclose 関数は、ファイル ポインターを引数として取ります。ファイル ポインターに関連付けられたファイルは、fclose 関数を使用して閉じられます。クローズが成功した場合は 0 を返し、ファイルのクローズ中にエラーが発生した場合は EOF (ファイルの終わり) を返します。

    ファイルを閉じた後、同じファイル ポインタを他のファイルでも使用できます。

    「C」プログラミングでは、プログラムが終了するとファイルは自動的に閉じられます。 fclose 関数を記述して手動でファイルを閉じることは、優れたプログラミング手法です。

    ファイルへの書き込み

    C では、ファイルに書き込む場合、改行文字「\n」を明示的に追加する必要があります。

    stdio ライブラリは、ファイルへの書き込みに必要な関数を提供します:

    以下のプログラムは、ファイルへの書き込みを実行する方法を示しています:

    fputc() 関数:

    #include <stdio.h>
    int main() {
            int i;
            FILE * fptr;
            char fn[50];
            char str[] = "Guru99 Rocks\n";
            fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode"
            for (i = 0; str[i] != '\n'; i++) {
                /* write to file using fputc() function */
                fputc(str[i], fptr);
            }
            fclose(fptr);
            return 0;
        }

    出力:

    上記のプログラムは、fputc_test.txt に 1 文字を書き込みます。 文が正常に書き込まれたことを示す次の行記号「\n」に到達するまで、ファイルに書き込みます。プロセスは、配列の各文字を取得してファイルに書き込むことです。

    <オール>
  • 上記のプログラムでは、fputc_test.txt というファイルを作成して書き込みモードで開き、ファイルに書き込まれる文字列を宣言しています。
  • for ループを使用して 1 文字ずつ書き込み操作を行い、「\n」文字が検出されるまで各文字をファイルに格納し、その後 fclose 関数を使用してファイルを閉じます。
  • fputs () 関数:

    #include <stdio.h>
    int main() {
            FILE * fp;
            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 というファイルを作成し、書き込みモードで開いています。
  • fputs() 関数を使用して書き込み操作を行った後、3 つの異なる文字列を書き込みます
  • 次に、fclose 関数を使用してファイルを閉じます。
  • fprintf()関数:

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

    出力:

    <オール>
  • 上記のプログラムでは、fprintf_test.txt というファイルを作成し、書き込みモードで開いています。
  • 文字列を書き込むことによって fprintf() 関数を使用して書き込み操作が実行された後、ファイルは fclose 関数を使用して閉じられます。
  • ファイルからのデータの読み取り

    ファイルからデータを読み取る専用の関数が 3 つあります

    次のプログラムは、それぞれ fgets()、fscanf() および fgetc () 関数を使用して fputs_test.txt ファイルから読み取る方法を示しています:

    #include <stdio.h>
    int main() {
            FILE * file_pointer;
            char buffer[30], c;
    
            file_pointer = fopen("fprintf_test.txt", "r");
            printf("----read a line----\n");
            fgets(buffer, 50, file_pointer);
            printf("%s\n", buffer);
    
            printf("----read and parse data----\n");
            file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointer
            char str1[10], str2[2], str3[20], str4[2];
            fscanf(file_pointer, "%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);
    
            printf("----read the entire file----\n");
    
            file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointer
            while ((c = getc(file_pointer)) != EOF) printf("%c", c);
    
            fclose(file_pointer);
            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

    <オール>
  • 上記のプログラムでは、以前に fprintf() 関数を使用して作成された「fprintf_test.txt」というファイルを開きました。このファイルには「Learning C with Guru99」という文字列が含まれています。行全体を処理するのに十分なバッファ サイズが必要な行ごとに読み取る fgets() 関数を使用して読み取ります。
  • ファイルを再度開いて、ファイルの先頭を指すようにポインタ ファイルをリセットします。さまざまな文字列変数を作成して、各単語を個別に処理します。変数を出力して、その内容を確認します。 fscanf() は、主にファイルからデータを抽出して解析するために使用されます。
  • ファイルを再度開いて、ファイルの先頭を指すようにポインタ ファイルをリセットします。 EOF ステートメントが検出されるまで、getc() 関数を使用して、ファイルからデータを読み取り、1 文字ずつ出力します
  • さまざまなバリアントを使用してファイルの読み取り操作を実行した後、fclose 関数を使用してファイルを再び閉じました。
  • getc と putc によるインタラクティブなファイルの読み取りと書き込み

    これらは最も単純なファイル操作です。 Getc は get character を表し、putc は put character を表します。これら 2 つの関数は、一度に 1 文字だけを処理するために使用されます。

    次のプログラムは、「C」プログラミングでのファイル処理関数を示しています:

    #include <stdio.h>
    int main() {
            FILE * fp;
            char c;
            printf("File Handling\n");
            //open a file
            fp = fopen("demo.txt", "w");
            //writing operation
            while ((c = getchar()) != EOF) {
                putc(c, fp);
            }
            //close file
            fclose(fp);
            printf("Data Entered:\n");
            //reading
            fp = fopen("demo.txt", "r");
            while ((c = getc(fp)) != EOF) {
                printf("%c", c);
            }
            fclose(fp);
            return 0;
        }
    

    出力:

    <オール>
  • 上記のプログラムでは、demo というファイルを作成し、書き込みモードで開いています。
  • 書き込み操作が実行された後、ファイルは fclose 関数を使用して閉じられます。
  • 読み取りモードでデータを含むファイルを再度開きました。 while ループは、eof が見つかるまで実行されます。ファイルの終わりが検出されると、操作は終了し、printf 関数を使用してデータが表示されます。
  • 読み取り操作を実行した後、fclose 関数を使用してファイルを再度閉じます。
  • まとめ


    C言語

    1. C# 変数と (プリミティブ) データ型
    2. C 入力 出力 (I/O)
    3. Cファイルの取り扱い
    4. Python ファイル I/O
    5. Apacer:世界中で発売されたCV110-SDおよびCV110-MSDカード
    6. Apacer:読み取り/書き込み速度が560および520MB /秒の産業用グレードのSV250SSDシリーズ
    7. アクセス:スケーラブルなデータ通信用のI / Oモジュール
    8. Raspberry PI I / Oブレイクアウトケーブルとプラグボードアダプター
    9. C - ファイル I/O
    10. C - ヘッダー ファイル
    11. I / Oカードとは何かとその仕組み