ハードディスク内のファイルにデータを追加で保存するにはファイルを開くとき オープンモード"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"は便利なモードだね。


前に書き込まれたデータが消えることもなし 


だね。


🌻 🌻


順調 順調



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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る