実はハードディスク内のファイルにデータを保存することとfclose関数をつかってファイルを閉じることは関係ありません。
fprintf関数によってデータをハードディスク内のファイルへ保存することと fclose関数によってファイルを閉じることは関係ありません
🌻 さ、次はどんなお話へとつづいていくのかな。
ソーラー 「このエピソードではタイトルの
fprintf関数によってデータをハードディスク内のファイルへ保存することと fclose関数によってファイルを閉じることは関係ありません
について学んでみようかな~
なあんて」
🌻ソーラーさん ファイルを閉じないということは
ファイルを開いた後
ファイルを閉じる命令文
fclose(fp);
を実行しないということなんだね。
fclose(fp);
を実行して
ファイルを閉じないということは
ファイルポインタ変数fpをもちいてハードディスクのファイルに
アクセス可能な状態のままにするということなんだね
ハードディスクのファイルにデータを保存した後
fclose(fp);
を実行して
ファイルを閉じるということを完了しなくても
ハードディスク内のファイルにデータが保存されないということはないんだ
ちゃんと
ファイルが閉じられていなくても
ハードディスク内のファイルにデータは保存されているんだね
🌻
ソーラー 「そうなんです。
ハードディスク内のファイルを開き
fprintf関数によって
ファイル構造体を通して
メモリに
保存したいデータが格納されると
ハードディスク内のファイルへのデータ保存は
すぐにおこなわれます。」
🌻せっかちさんだ~🌼
ソーラー「では実際に
fprintf関数を使って
ハードディスク内のTEN-GOGO-C-language.txtファイルに
数値データを書き込んでみます。
もちろん
fclose(fp);
をおこないファイルを閉じるようなことはしません
fprintf関数を使って
ハードディスク内のTEN-GOGO-C-language.txtファイルにデータを
保存する前に
まずはハードディスク内のTEN-GOGO-C-language.txtファイルを
まっさらで何もデータが格納されていない状態にしようかな
まずは
次のプログラムを実行して
TEN-GOGO-C-language.txtファイルを
まっさら~
何もデータが保存されていない状態にしてみます。
#pragma warning(disable: 4996)
#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!ファイルオープンに成功しましたよ~ん
ソーラー「PC内検索でTEN-GOGO-C-language.txtファイル
の中身を調べてみると
まっさらな白地の空白になっています。
オープンモード"w"でファイルを開いて閉じると
ファイル内に保存されていたデータはすべて消去されるんだったね。
これで準備完了~🌞
そして次に
そのまっさらな
TEN-GOGO-C-language.txtファイルに
fprintf関数を使って
数値
1
2
3
4
5
を保存してみます。
そのプログラムは次のようになります。
#pragma warning(disable: 4996)
#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);
/*ここではfclose(fp); はおこないません*/
return 0;
}
ソーラー「さあ、このプログラムを実行してみると・・・」
コンパイル結果
Hello!ファイルオープンに成功しましたよ~ん
ソーラー「そして
PC内検索でTEN-GOGO-C-language.txtファイル
を探し出して中身を調べてみると・・
1
2
3
4
5
🌻
fclose(fp);
をおこなわなくても
ちゃんと
データが保存されてる😊
🌻
ソーラー「ちゃんとfprintf関数を使って
TEN-GOGO-C-language.txtファイルに
1
2
3
4
5
を
保存することができました。
このとき
プログラムの最後で
ファイルをクローズする
命令文
fclose(fp);
をおこないませんでした。
ですが
ハードディスク内のTEN-GOGO-C-language.txtファイルに
ちゃんと
数値
1
2
3
4
5
が保存されましたね🌞
このように
fclose(fp);
を行い
ファイルを閉じることと
ファイルにデータを保存することとは関係ありません
ファイル構造体をとおして
メモリに
数値データ
1
2
3
4
5
が格納された時点で
ハードディスク内のTEN-GOGO-C-language.txtファイルに
数値データ
1
2
3
4
5
は保存されています
その後
fclose(fp);
が行われて
ハードディスク内のTEN-GOGO-C-language.txtファイルに
アクセスできない状態となるわけです。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます