ハードディスク内のファイルにデータを追加で保存するにはファイルを開くとき オープンモード"a"をもちいます
🌻 🌻
ファイルポインタ変数宣言とfopen関数の設定
FILE *fp;
fp=fopen("TEN-GOGO-C-language.txt","w");
でfopen関数の第2引数の"w"を"a"にかえれば
オープンモード"a"で
TEN-GOGO-C-language.txtファイルは開かれます。
このaは英語のadd(加える、プラスする、足すの意味)という単語の
頭文字を表しています。
このオープンモード"a"でファイルを開いたときは
オープンモード"w"でファイルを開いたときのように
ファイルが初期化されてファイル内に保存されていたデータが
消えるということはなく
前に保存されたTEN-GOGO-C-language.txtファイル内のデータは
残したまま
そのデータに追加する形で新たにデータを保存することができます。
もちろん
ファイルポインタ変数宣言とfopen関数の設定を
FILE *fp;
fp=fopen("TEN-GOGO-C-language.txt","a");
のように
ファイル名は
前にデータが保存されたときのファイル名と
同じTEN-GOGO-C-language.txtにして
オープンモード"a"で開かなければだめなんです
(前にデータが保存されたときのファイル名TEN-GOGO-C-language.txt
と
同じファイル名TEN-GOGO-C-language.txtを
記述すればよいというわけです
ファイルポインタ変数名は同じfpでなくてもよいので🌞
ファイルポインタ変数名をspやgpに変えて
FILE *sp;
sp=fopen("TEN-GOGO-C-language.txt","a");
と記述しても
FILE *gp;
gp=fopen("TEN-GOGO-C-language.txt","a");
と記述しても構いません。)
それでは
オープンモード"a"でファイルを開くとどのようなことができるのかな
試してミルミル!
ハードディスク内のファイルにデータを追加するモードである
オープンモード"a"でファイルを開く場合でも
ファイルポインタ変数宣言とfopen関数の設定で
ファイルポインタ変数名はfpでもfp2でも何でもいいので
まずはfpを用いて
ファイルポインタ変数宣言
FILE *fp;
をおこない
fopen関数の設定で
以前作成されたことのない
新たなファイル名をfopen関数の第1引数に設定し
ハードディスク内に新しくファイルを作製するのであれば
オープンモード"a"でも
もちろん保存されているデータが何もない
まっさらな新たなファイルが作成されます
そして、その何もデータが保存されていないまっさらの状態から
新たにデータはファイルに保存されていくことになります
新規書き込みモード"w"のような状態ですね
🌼
🌻 🌻
ではオープンモード"a"
さっそくためしてみる?みる?😊
🌼
ソーラー
「では、では😊
文字列データ "とれたてHello!world"を
オープンモード"a"をつかって
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");
fprintf(fp,"ぷりぷりHello!world\n");
fclose(fp);
return 0;
}
👆
まずこのプログラムを実行して
ぷりぷりHello!worldを
TEN-GOGO-C-language.txtファイルに
書き込み
TEN-GOGO-C-language.txtファイルをクローズします。
コンパイル後
パソコン内で
TEN-GOGO-C-language.txtファイルを検索すると
文字列 ぷりぷりHello!world
が保存されてるのがみつけられるね(⋈◍>◡<◍)。✧♡
準備OK!
文字列 ぷりぷりHello!world
が保存されてる状態の
このTEN-GOGO-C-language.txtファイルに
オープンモード"a"で
データが追加保存できるか試してみるとしよっか
つまり
閉じられた
TEN-GOGO-C-language.txtファイルを
再び
オープンモード"a"で開いて
データを追加保存できるか試してみるわけだね。
ファイルポインタ変数宣言とfopen関数の設定は
ファイルポインタ変数名は以前
文字列 ぷりぷりHello!world
をハードディスクのファイルを保存するときに
使われた同じfpでも
そうでなくてもいいんだけど
一応fpに設定し
ファイル名は同じTEN-GOGO-C-language.txtに設定し
てみます。
さあ、データを追加保存できるかな?
再びTEN-GOGO-C-language.txtファイルを
オープン(TEN-GOGO-C-language.txtにアクセスできる状態に)してみよう
わくわくするね!
その際の
ファイルポインタ変数宣言とfopen関数の設定は
fopen関数の第2引数を
新規書き込みできるオープンモード"w"から
追加書き込みできる オープンモード"a"
にかえて
FILE *fp;
fp=fopen("TEN-GOGO-C-language.txt","a");
となるね。
オープンモード"a"でTEN-GOGO-C-language.txtファイルを
再びオープンし
TEN-GOGO-C-language.txtファイルに
以前保存された
文字列
ぷりぷりHello!world
に加えて
文字列
とれたてHello!world
が追加で保存できるかどうか
次のようにプログラムを構成して試してみるよ。
#pragma warning(disable: 4996)
#include <stdio.h>
int main (void){
FILE *fp;
fp=fopen("TEN-GOGO-C-language.txt","a");
if(fp==NULL){
printf("ファイルオープンに失敗しましたよ~ん\n");
return -1;}
else printf("Hello!ファイルオープンに成功しましたよ~ん\n");
fprintf(fp,"とれたてHello!world\n");
fclose(fp);
return 0;
}
コンパイル結果
Hello!ファイルオープンに成功しましたよ~ん
いいメッセージだねえ~。
このメッセージにしておいてよかったよ。
きみも そ~思わないかい~
癒されるねぇ
このメッセージが表示されるときは
ファイルオープンに成功していることがわかるね
つまりファイルポインタ変数fpをもちいて
TEN-GOGO-C-language.txtにアクセスできる状態には
なったわけだ
あとは
fprintf(fp,"とれたてHello!world\n");
が実行されるので
とれたてHello!world
が
TEN-GOGO-C-language.txtに保存されてるはずなんだけど・・・
そして
fclose(fp);
が実行されて
ファイルはクローズされたので
ファイルポインタ変数fpを用いて
TEN-GOGO-C-language.txtにアクセスすることはできなくなったというわけなんだね
fclose(fp);
が実行される前に
fprintf(fp,"とれたてHello!world\n");
が実行されていることにより
TEN-GOGO-C-language.txtファイルに
とれたてHello!world
が
ぷりぷりHello!worldにつづいて
格納されているはずなんだ
さあ このとれたてHello!worldは
ぷりぷりHello!worldにつづいてほんとに
TEN-GOGO-C-language.txtファイルに追加して保存されたかな?
PC内で
TEN-GOGO-C-language.txtファイルを検索して
中身を確認してみると・・・
👇
🌞
ぷりぷりHello!world
とれたてHello!world
🌞
やったね
ぷりっぷりとれとれの
とれたてHello!world
がTEN-GOGO-C-language.txtファイルに追加保存されている・・。
オープンモード"a"を使ってファイルを開いて
データの追加保存ができたわけだ。
ファイル内の真っ白な白地
この白地に浮かぶ
ぷりぷりHello!world
とれたてHello!world
の
文字が
たまらないね。
ふっ
ならば
今の文字列
とれたてHello!world
を追加するプログラムを
👇
#pragma warning(disable: 4996)
#include <stdio.h>
int main (void){
FILE *fp;
fp=fopen("TEN-GOGO-C-language.txt","a");
if(fp==NULL){
printf("ファイルオープンに失敗しましたよ~ん\n");
return -1;}
else printf("Hello!ファイルオープンに成功しましたよ~ん\n");
fprintf(fp,"とれたてHello!world\n");
fclose(fp);
return 0;
}
何回かコンパイルする
そうすると
TEN-GOGO-C-language.txtファイルの中には
どのようにデータが保存されているかな
ふたたび
PC内で
TEN-GOGO-C-language.txtファイルを検索してみると・・・
ぷりぷりHello!world
とれたてHello!world
とれたてHello!world
とれたてHello!world
とれたてHello!world
とれたてHello!world
あな うつくし
追記モード"a"は便利なモードだね。
前に書き込まれたデータが消えることもなし
だね。
🌻 🌻
順調 順調
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます