練習課題:入力文字をファイルに保存する

 さて、ここで、ファイルの入出力処理に関する練習課題をやってみましょう。

 課題:キーボードから入力された文字をファイルに保存するプログラムを書いて下さい。保存するファイル名は「testfile5.txt」とします。キーボードからNULLが送信されたタイミングで、キーボードからの入力文字をファイルに出力する処理を終了します。

 ぜひ、まずは自力で考えてみて、プログラムを書いて、実行してみて下さい。尚、日本語などのマルチバイト文字(全角文字)も扱おうとすると、プログラムに工夫をしないといけなくなるので、ここでは半角英数のみをキーボードから入力するという条件にします。

 また、gets関数の記事も参考にしてみて下さい。

 …… 

 では、回答例を以下に掲載します。

#include <stdio.h>

struct person {
    char name[40];          // 名前
    int hp;                 // HP
    int power;              // 攻撃力
};
typedef struct person character;

int main(int argc, const char * argv[])
{
    
    // insert code here...
    
    // ファイルのオープン
    FILE *fp;
    fp = fopen("testfile5.txt", "w");
    
    // キーボードからの入力文字を受け付ける
    char input[512];        // 充分に大きな配列を用意する
    
    printf("文字を入力して下さい。\n");
    
    // NULLを送るまで無限ループで処理
    while (fgets(input, sizeof(input), stdin) != NULL) {
        // ファイルに書き込み
        fputs(input, fp);
    }
    
    // ファイルのクローズ
    fclose(fp);
    
    printf("ファイル処理を終了しました。\n");
    
    return 0;
}

 実行すると、「testfile5.txt」が出来上がり、キーボードから入力した内容が正常に保存されているかと思います。

This is a test.
Test, Test, Test!

And, Test.
Test.

End.

 無限ループを使うなどして、少し難しかったかもしれません。HPや攻撃力の数値を変えて、遊んでみて下さい。

■スポンサーリンク

このページの先頭へ