Visual Studioでは ハードディスク内にファイルを作製するのにfopen関数だけでなくfopen_s関数を使用することができます

🌻   🌻   🌻


統合開発環境Visual Studioでは


ハードディスク内にファイルを作製するのに

従来の古くからC言語で使用されてきた


fopen関数だけでなく


マイクロソフト社によって

独自にVisual Studio専用に作製された

fopen_s関数を使用することができるんだよ


fopen_s関数をつかって


ハードディスク内にTEN-GOGO-C-language.txtファイルを作製し


作製したファイルをオープンするには


次のようにプログラムを記述します。


#include <stdio.h>


int main(void) {

FILE *fp;

fopen_s(&fp,"TEN-GOGO-C-language.txt","w");

return 0;

}



ビルド結果


続行するには何かキーをおしてください・・・_


🌻


このプログラムが実行されると


ハードディスク内に


TEN-GOGO-C-language.txt

の.txtがとれた


ファイル名が


TEN-GOGO-C-language


のファイルが作成されるんです


🌻



ソーラー「これがマイクロソフト社によって

作製された


fopen_s関数なんだね


fopen関数をもちいて


ハードディスク内にTEN-GOGO-C-language.txtファイルが


作成されたときは


ファイルポインタ変数宣言とfopen関数の設定は


FILE *fp;

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


となっていたけど


fopen_s関数では


ファイルポインタ変数宣言とfopen_s関数の設定は


FILE *fp;

fopen_s(&fp,"TEN-GOGO-C-language.txt","w");


となっているんだね。


fopen_s関数の引数は3つに増えているね。


それにしても


&fpの意味がよく分からないね


ファイルポインタ変数fpのアドレスか・・・


変数aが数値データ1を格納しているとき


変数aには数値データ1を格納するメモリの


アドレスがあったよね


同様に

ファイルポインタ変数fp自体も


アドレスを格納していて


アドレスを格納するためのメモリがあるから


メモリのアドレス&fpも


あるってわけなんだね


ファイルポインタ変数fpといっても


普通の


int型の変数aのように


(数値)を格納している変数には変わらないので


int型の変数aにアドレス&aがあるように


ファイルポインタ変数fpにもアドレス&fpがあるんだね。


ただ、なぜ


fopen_s(&fp,"TEN-GOGO-C-language.txt","w");


fopen_s関数の第1引数に&fpを持ってきたのかは


ちょっと・・・わからないね(´▽`)


まっ いっか😊 」



🌻🌻

わ😊


か😊し😊こ~😊い


🌻    🌻


ソーラー「はは きみもそう思う?😊」



ソーラー「


#include <stdio.h>


int main(void) {

FILE *fp;

fopen_s(&fp,"TEN-GOGO-C-language.txt","w");

return 0;

}



ビルド結果


続行するには何かキーをおしてください・・・_



このプログラムが実行された後


コマンドプロンプト画面を見ても


続行するには何かキーをおしてください・・・_


が表示されるのみで


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


ハードディスク内に作製されているかどうかわからないよね。


そこで


次のようにプログラムを記述します。


#include <stdio.h>


int main(void) {

FILE *fp;

fopen_s(&fp, "TEN-GOGO-C-language.txt", "w");

if (fopen_s(&fp, "TEN-GOGO-C-language.txt", "w")==0)

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

else

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

return 0;

}


fopen_s関数はハードディスク内のファイルが既に消去されたりしていて


ファイルオープンに失敗すると

0という値、(戻り値と言います)

をもつことになります。


すなわち


fopen_s(&fp, "TEN-GOGO-C-language.txt", "w")=0となります。


すると


if (fopen_s(&fp, "TEN-GOGO-C-language.txt", "w")==0)


に続く命令文

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

が実行され


ファイルオープンに失敗しましたよ~ん


が表示されることになります。


ファイルオープンに成功すると


fopen_s関数は

0以外の値、(戻り値と言います)

をもつことになります。


すなわち


fopen_s(&fp, "TEN-GOGO-C-language.txt", "w")≠0となります。


すると


else


に続く命令文

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

が実行され


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


が表示されることになります。


このように

ファイルポインタ変数宣言とfopen関数の設定

FILE *fp;

fopen_s(&fp, "TEN-GOGO-C-language.txt", "w");

をおこなったあと


if (fopen_s(&fp, "TEN-GOGO-C-language.txt", "w")==0)

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

else

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


を記述することにより


プログラムの実行後


コマンドプロンプト画面に


ファイルオープンが成功したかどうかを表示させることができます。


それでは実際にそのプログラムを実行してみよっか」


🌻🌻

そうしよ


🌻🌻



#include <stdio.h>


int main(void) {

FILE *fp;

fopen_s(&fp, "TEN-GOGO-C-language.txt", "w");

if (fopen_s(&fp, "TEN-GOGO-C-language.txt", "w")==0)

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

else

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

return 0;

}


ソーラー「ビルド」


ビルド結果

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


🌻

やったね!

fopen_s関数を使って

ハードディスク内にTEN-GOGO-C-language.txtファイルを

作製

そして

TEN-GOGO-C-language.txtファイルをオープン


することができたね。


        🌻


ソーラー「そうだね😊」

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

作者を応援しよう!

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

応援したユーザー

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