===== 構造体の復習 =====
===== ファイルの読み書き =====
under construction ...\\
==== ファイルの書き込み ====
* ファイルを書き込む4つのステップ
- ファイルポインタの用意
- ファイルのオープン
- ファイルへの書き込み(読み込み)
- ファイルのクローズ
== 実際にやってみよう ==
* 授業では、ファイルの書き込みをはじめにやってみた。
* 次に、**文字列の配列**(char xxx[][]の形になるやつ)の書き込みをfor文を使って
* **構造体の配列**の読み込みをfor文を使ってやってみた
ファイルの書き込み
#define _CRT_SECURE_NO_WARNINGS
#include
//①ファイルポインタの用意
//②ファイルのオープン
//③ファイルへの書き込み(読み込み)
//④ファイルのクローズ
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;
}
==== ファイルの読み込み ====
ファイルの書き込み
#define _CRT_SECURE_NO_WARNINGS
#include
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型」**として
* 利用可能になるよ!