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ファイルをオープン
することができたね。
🌻
ソーラー「そうだね😊」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます