fputs関数とfgets関数

 今回は、ファイルの読み込み・書き込みに関する命令の中からfputs関数fgets関数について説明します。fputc関数とfgetc関数が「一文字」だけ入出力するのに対し、fputs関数とfgets関数は、文字列を一行分、ファイルから読み込む(ファイルに書き込む)ための関数です。書き込むのがfputs関数、読み込むのがfgets関数です。

 まずは以下のサンプルコードを、確認して下さい。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    
    // ファイルのオープン
    FILE *fp;
    fp = fopen("testfile2.txt", "w");
    
    // ファイルに書き込み
    fputs("abcdefg\nhijklmn", fp);
    
    // ファイルのクローズ
    fclose(fp);
    
    return 0;
}

 実行するとtestfile2.txtが出来ていて、以下のように2行の文字列が書かれていると思います。

abcdefg
hijklmn

 ここで、以下のプログラムを実行してみて下さい。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    
    // ファイルのオープン
    FILE *fp;
    if((fp = fopen("testfile2.txt", "r")) == NULL) {
        printf("ファイルを開けませんでした。");
    } else {
        
        // ファイルから読み込み
        char ch[40];
        fgets(ch, 40, fp);
        printf("%s", ch);
        
        // ファイルのクローズ
        fclose(fp);
        
    }
    
    return 0;
}

 画面に「abcdefg」と表示されることを確認して下さい。今回も、読み込みエラーが発生する可能性を考慮し、エラーになる場合は、この後の処理を行わないように記述しています。

 応用例として、puts関数のところで行ったように、ファイルから読み込んだものが、ファイルの末端(NULL)になるまでwhileでループさせて処理する、という書き方も出来ます。余裕のある方は、どう書けば良いか考えてみると良いでしょう。

■スポンサーリンク

このページの先頭へ