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

🌻   🌻   🌻


統合開発環境Visual Studioでは


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

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


fopen関数だけでなく


(Visual Studioでfopen関数を使用するにはプログラムの冒頭に


#pragma warning(disable: 4996)を記述してください)


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

独自に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が管理しているメモリに数値データが格納されています


変数aのアドレスとは変数aが管理しているメモリの


アドレスだったよね


同様に

ファイルポインタ変数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)



if (0==0)


if (1)

となり


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_s関数の設定

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で共有
  • はてなブックマークでブックマーク

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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