構造体の復習
ファイルの読み書き
under construction …
ファイルの書き込み
* ファイルを書き込む4つのステップ
- ファイルポインタの用意
- ファイルのオープン
- ファイルへの書き込み(読み込み)
- ファイルのクローズ
実際にやってみよう
- 授業では、ファイルの書き込みをはじめにやってみた。
- 次に、文字列の配列(char xxx[][]の形になるやつ)の書き込みをfor文を使って
- 構造体の配列の読み込みをfor文を使ってやってみた
Listing. 1: ファイルの書き込み
- "main.cpp"
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> //①ファイルポインタの用意 //②ファイルのオープン //③ファイルへの書き込み(読み込み) //④ファイルのクローズ int main() { struct CHARACTER//構造体の定義(struct XXXX型を宣言) { char name[11];//名前を格納する配列 int life;//HP int strength;//腕力 int defence;//防御 float luck;//運 }; struct CHARACTER character[5] = {//構造体の配列の初期化 { "Hero", 100, 20, 10, 0.1f }, { "Cleric", 80, 10, 15, 0.2f }, { "Mage", 60, 15, 5, 0.3f }, { "D.Knight", 120, 25, 20, 0.05f }, { "Thief", 70, 18, 8, 0.25f } }; //name[配列数][文字数+1] = { "勇者", "神官", "魔法使い", "竜騎士" }; //文字数+1のところは書かないとダメ! char name[][9] = { "Hero", "Cleric", "Mage", "D.Knight" }; FILE* fp;//①ファイルポインタの用意 int i; fp = fopen("data.txt", "w");//②ファイルのオープン //wは書き込みモード //rは読み込みモード fprintf(fp, "Data Writing Test\n");//③ファイルへの書き込み //1行に一人の名前を出力するよ //for (i = 0;i < 4; i++) //{ // fprintf(fp, "%s\n", name[i]);//名前を出力 //} for (i = 0;i < 5;i++) { fprintf(fp, "%s %d %d %d %.2f\n", character[i].name, character[i].life, character[i].strength, character[i].defence, character[i].luck); } fclose(fp);//④ファイルのクローズ return 0; }
ファイルの読み込み
Listing. 2: ファイルの書き込み
- "main.cpp
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { char data[5][9]; FILE* fp; fp = fopen("savedata.txt", "r");//読み込みは"r"を指定 Readのr if (fp == NULL) { //ヌルポならプログラムから抜ける printf("ファイルが開けませんでした。\n"); return -1; } for (int i = 0; i < 5; i++) fscanf(fp, "%s", data[i]); fclose(fp); //ファイルを閉じる printf("パーティ 5人衆\n"); for (int i = 0; i < 5; i++) printf("%s\n", data[i]); return 0; }
その他おまけ要素
- Windowsの文字変換で超高速に絵文字のリストを呼び出す方法(Win+.)
- 1つのソリューションに複数のプロジェクトをぶら下げて使う方法
- ソリューション名を右クリックして追加 ⇒ 新しいプロジェクト
- プロジェクト名を右クリックして「スタートアッププロジェクトに設定」
- テキストファイルとバイナリファイルのデータ保存の仕方の違い
- C++とC言語のstructの扱いの違い
- どちらでも新しい型として認識してくれるようになるよ
- struct abc {}を宣言すると?
- C言語では 「struct abc型」として
- C++では 「abc型」として
- 利用可能になるよ!