ほぷしぃ

納得C言語!

[第16回]ファイル入出力(解答)

(1)解答

解答プログラム

#include <stdio.h>
#include <string.h>

int main(){
    FILE *fp;        //ファイルポインタ
    char str[1024];

    fp = fopen("日本国憲法.txt","w"); //書き込み専用でファイルを開く
    if(fp==NULL){
        printf("ファイルオープンエラー");
        return -1; //ファイルを開けなかった場合の対策として終了させる
    }

    while((strcmp(str,"end"))!=0){  //文字列の比較endを入力すると書き込みを終了する
        scanf("%s",str);            //文字列の入力
        fprintf(fp,str);            //fpに入力文字を格納しファイルに出力
    }

    fclose(fp);//ファイルを閉じる
    return 0;
}

結果

結果

ここは入力するだけですね。
フォルダを見てファイルがあるか確認してみてください。

まずファイル構造体へのポインタを宣言します。
次に書き込みモードでファイルを開きます。
このとき、名前は自分の好きなものでかまいません。
while文でendが入力されるまでキーボードから読み込み、ファイルに書き込んでいきます。
endが入力されたらwhileを終了し、ファイルを閉じて終了となります。


(2)解答

解答プログラム

#include <stdio.h>
#include <string.h>

int main(){
    FILE *fp;
    char str[256];

    fp = fopen("日本国憲法.txt","r");    //ファイルを開く
    if(fp==NULL){                        //ファイルオープンに失敗した場合の対策
        printf("ファイルオープンエラー");
        return -1;
    }

    while(fgets(str,255,fp)){    //fgetsで"日本国憲法.txt"の中身を読み出し
        printf("%s", str);       //画面出力
    }
    printf("\n");
    fclose(fp);    //ファイルを閉じる
    return 0;
}

結果

結果

ファイルに書き込まれていたものが表示されましたね。
解答のプログラムではendも出力されてしまっています。練習問題1と2、どちらか直せば出なくなりますので、やってみてください。

こちらは練習問題1の反対ですね。
練習1で保存したファイル名を読み込みモードで開きます。
次に、指定した文字数分だけ読み込み出力し、ファイルの最後まで到達したら終了します。


[第16回]ファイル入出力 ページのトップ [第17回]プリプロセッサ