オープンモード”w+”,"r+","a+"が読み込みモードになるか書き込みモードになるかは最初にfscanf関数がつかわれるかfprintf関数が使われるかによって決まります。

fprintf関数を使った後に fscanf関数を使ってみる

ソーラー 「それではっっ 


オープンモード"w+"について考察してみよう」


                🌞   🌞


それでは いくよ😊



#include <stdio.h>

int main (void){


FILE *fp;

fp=fopen("TEN-GOGO-C-language.txt","w+");

if(fp==NULL){

printf("ファイルオープンに失敗しましたよ~ん\n");

return -1;}

else printf("Hello!ファイルオープンに成功しましたよ~ん\n");


fclose(fp);

return 0;

}

コンパイル結果

Hello!ファイルオープンに成功しましたよ~ん


まずは

オープンモード"w+"でファイルを開いて


ファイルを閉じてみました



PC内検索で


TEN-GOGO-C-language.txtファイルを検索して


中身を確認してみると


TEN-GOGO-C-language.txtファイル内の


データは消えてしまっています


このように


オープンモード"w+"で 


ファイルをオープンした場合は


以前にTEN-GOGO-C-language.txt内に保存されていたデータは


消えてしまいます


そしてオープンモード"w+"は


+により


データの読み込み機能rが追加されていますっっ



ソーラー「TEN-GOGO-C-language.txtファイルには


なにもデータがない😊


ここで


ファイルを閉じる前に


fprintf関数をつかって


TEN-GOGO-C-language.txtファイルに数値データ


1

2

3

4

5


かきこんだならば


fscanf関数を使ってそのデータを 


コマンドプロンプト画面によびだせるということになるのかな???」



🌻

そうだね😊


試してみよう ソーラーさん😊

🌼


そのプログラムは


以下のようになります



#include <stdio.h>

int main (void){


FILE *fp;

fp=fopen("TEN-GOGO-C-language.txt","w+");

if(fp==NULL){

printf("ファイルオープンに失敗しましたよ~ん\n");

return -1;}

else printf("Hello!ファイルオープンに成功しましたよ~ん\n");


fprintf(fp,"%d\n",1);

fprintf(fp,"%d\n",2);

fprintf(fp,"%d\n",3);

fprintf(fp,"%d\n",4);

fprintf(fp,"%d\n",5);


int hairetu[5];


fscanf(fp,"%d",&hairetu[0]);

fscanf(fp,"%d",&hairetu[1]);

fscanf(fp,"%d",&hairetu[2]);

fscanf(fp,"%d",&hairetu[3]);

fscanf(fp,"%d",&hairetu[4]);


printf("%d\n",hairetu[0]);

printf("%d\n",hairetu[1]);

printf("%d\n",hairetu[2]);

printf("%d\n",hairetu[3]);

printf("%d\n",hairetu[4]);

fclose(fp);

return 0;

}


コンパイル結果


Hello!ファイルオープンに成功しましたよ~ん

9

2

1703760

1964398416

1703808


ソーラー「


なぜ


整数値

1

2

3

4

5

TEN-GOGO-C-language.txtファイルに

格納したはずなのに


コンパイル結果は

9

2

1703760

1964398416

1703808


になるのかな?」




🌻     🌻     🌻


??

そうだね

fprintf関数を使った直後に

fscanf関数を使うのは


相性が悪いのかな😊


コンパイル結果をみると


配列 が初期化されていないときに格納されている数値


9

2

1703760

1964398416

1703808



fprintf関数によって


表示されてるね


🌼  🌼


ソーラー「PC内検索でTEN-GOGO-C-language.txtファイルの中身を


検索してみると


ちゃんと


fscanf関数によって


1

2

3

4

5


TEN-GOGO-C-language.txtファイルに格納されてるからね



それとは別に


オープンモード"w+"


でファイルを開くと 前に保存されたデータは消えてしまうので


オープンモード"w+"の


ファイルデータ読み取り機能は 使えない気がするんだけど・・


そう思わない?」


🌻  🌻

ほんとだね!


面白いね ソーラーさん


🌼  

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます