天国にいけるC言語入門 ヘキサ構造体 ver5.2130
ファイルにデータがなにも保存されてない状態でオープンモード"r"でファイルをひらきデータを読み取りprintf表示したなら どのようなデータがコマンドプロンプト画面に表示されるでしょうか
ファイルにデータがなにも保存されてない状態でオープンモード"r"でファイルをひらきデータを読み取りprintf表示したなら どのようなデータがコマンドプロンプト画面に表示されるでしょうか
ソーラー
「
ファイルになにもデータが保存されていない空白の状態で
🍊オープンモード"r"を設定し🍊
fscanf関数を使用可能状態にしてから
fscanf関数を使って空白の状態を配列に格納し
配列内のデータをprintf出力表示したら
コマンドプロンプト画面には何が表示されるのかな?」
🌻 🌻
この部分は
ハードディスク内のTEN-GOGO-C-language.txtファイルに
何もデータが保存されていない空白の状態のとき
ファイルポインタ変数宣言とfopen関数の設定で
FILE *fp;
fp=fopen("TEN-GOGO-C-language.txt","r");
のように
🍊オープンモード"r"を設定し🍊
🍊オープンモード"r"により使用可能となったfscanf関数を使って🍊
TEN-GOGO-C-language.txtファイルの空白の状態のデータを
ファイルポインタ変数fpが格納している
アドレスのメモリに格納したあと
用意した配列に
ファイルポインタ変数fpが格納しているアドレスのメモリに
集められた空白の状態のデータを
格納し直し
配列に格納された空白の状態のデータをprintf出力表示したら
コマンドプロンプト画面には何が表示されるのかな?
ともいえるのかな
🌻 🌻
ソーラー「そう、そうなんです
fscanf関数を使って
ファイルポインタ変数fpが格納しているアドレスのメモリに
格納されたハードディスク内の
TEN-GOGO-C-language.txtファイルのデータは
配列に格納しなおさないと
そのデータをとりあつかえないんだ」
🌞🌻
ファイルになにもデータがはいっていない空白の状態で
🍊オープンモード"r"を設定し🍊
fscanf関数を使用可能状態にしてから
fscanf関数を使って空白の状態を
配列に格納し
配列に格納されたデータをprintf出力表示
させるためには
うふふふ この文章 くりかえされるね😝
まず最初に
ファイルになにもデータがはいっていない空白の状態を
作らないといけないっか? ねえ?
🌻 🌼
ソーラー「それなら 簡単
オープンモード"w"でファイルをオープンしたら
前に格納されたデータはすべて消えてしまうから
ファイルになにもデータがはいっていない空白の状態をつくるには
オープンモード"w"でファイルをオープンするだけでいいんだ
次のプログラムのようにね」
#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");
fclose(fp);
return 0;
}
コンパイル結果
EAZY IDECの場合
Visual Studioの場合
Hello!ファイルオープンに成功しましたよ~ん
🌞 🌞
はっ
ふふっ
いつのまにか
ファイルのオープンモードの使い方になれてきたね
感心しちゃった
とにかく これで
ファイルになにもデータが格納されてない状態ができあがったね
😊😊😊
ソーラー
「あはは ほんとだね」
🌻
あとは
オープンモード"w"
から
オープンモード"r"
に
🍓オープンモードを変更して🍓
fscanf関数を使用可能状態にし
TEN-GOGO-C-language.txtファイルの空白データを
fscanf関数をつかって
配列に格納して
空白データをコマンドプロンプト画面に
printf出力表示してあげれば
いいだけになるね
そのプログラムはっと・・・
オープンモード"r"にしてっと・・・
こうかな?
👇
#pragma warning(disable: 4996)
#include <stdio.h>
int main (void){
FILE *fp;
fp=fopen("TEN-GOGO-C-language.txt","r");
if(fp==NULL){
printf("ファイルオープンに失敗しましたよ~ん\n");
return -1;}
else printf("Hello!ファイルオープンに成功しましたよ~ん\n");
int hairetu[5];
fscanf(fp,"%d\n",&hairetu[0]);
fscanf(fp,"%d\n",&hairetu[1]);
fscanf(fp,"%d\n",&hairetu[2]);
fscanf(fp,"%d\n",&hairetu[3]);
fscanf(fp,"%d\n",&hairetu[4]);
printf("%d\n",hairetu[0]);
printf("%d\n",hairetu[1]);
printf("%d\n",hairetu[2]);
printf("%d\n",hairetu[3]);
printf("%d\n",hairetu[4]);
fclose(fp);
return 0;
}
ソーラー「いい感じにプログラムができあがったね」
🌻そうだね ソーラーさん🌻
ソーラー 🌻「それでは このプログラムを・・
コンパイルっ!」
どきどき・・・
ソーラー「どんな結果が出てくるかな」
コンパイル結果
EAZY IDECの場合
Hello!ファイルオープンに成功しましたよ~ん
9
2
1703760
1964398416
1703808
Visual Studioの場合
Hello!ファイルオープンに成功しましたよ~ん
-858993460
-858993460
-858993460
-858993460
-858993460
(メモリの使用状況によりこれらの値は異なってきます。)
ソーラー 「あれっ?これ前のエピソードのときと
同じコンパイル結果だね。
どうも
ハードデイスクのファイルに何もデータが格納されていない
空白のデータを
fscanf関数は配列にとりこめないみたいだね
だから
配列宣言
int hairetu[5];
によって作製された
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
は
fscanf関数によって取り込まれたデータによって初期化されず
初期化されていないときに
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に格納されている数値
EAZY IDECの場合
9
2
1703760
1964398416
1703808
Visual Studioの場合
-858993460
-858993460
-858993460
-858993460
-858993460
が
printf("%d\n",hairetu[0]);
printf("%d\n",hairetu[1]);
printf("%d\n",hairetu[2]);
printf("%d\n",hairetu[3]);
printf("%d\n",hairetu[4]);
により
コマンドプロンプト画面に表示されたんだね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます