龍神録プログラミングの館さんのサイトの
https://dixq.net/rp/11.html
のページを参考にカンマ区切りのデータを読み込み、
構造体にそのデータを代入するプログラムを書いてみましたが、
ビルドでエラーが出てしまい、
解決方法がわからず行き詰ってしまったので教えてください。
touroku.datというデータ用のファイルを作り、
中身はカンマ区切りで以下のような感じになってます。
AAAAAAAAAAAAAAA,パンチ,777
BBBBBBBBBBBBBBB,キック,888
CCCCCCCCCCCCCCC,チョップ,999
全体のソースコードです。
#include "DxLib.h"
// 構造体
typedef struct {
char name[64]; // 名前(文字列で扱う)
char wazamei[64]; // 技名(文字列で扱う)
int type; // タイプ(数値で扱う)
}touroku_data_t;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode(true);//ウィンドウモード
//ウィンドウサイズを変更する
SetGraphMode(1024, 768, 32);
// DXライブラリ初期化処理
if( DxLib_Init() == -1 )
{
return -1 ; // エラーが起きたら直ちに終了
}
int n,num,i,fp;
char fname[32]={"touroku.dat"};
int input[64];
char inputc[64];
// 構造体の要素をとりあえず100個作る
touroku_data_t touroku_data[100];
fp = FileRead_open(fname);//ファイル読み込み
if(fp == NULL){
printfDx("read error\n");
return;
}
n=0 , num=0;
while(1){
for(i=0;i<64;i++){
inputc[i]=input[i]=FileRead_getc(fp);//1文字取得する
if(input[i]==',' || input[i]=='\n'){//カンマか改行なら
inputc[i]='\0'; //そこまでを文字列とし
break;
}
if(input[i]==EOF){//ファイルの終わりなら
goto EXFILE;//終了
}
}
switch(num){
case 0: touroku_data[n].name=inputc;break;
case 1: touroku_data[n].wazamei=inputc;break;
case 2: touroku_data[n].type=atoi(inputc);break;
}
num++;
if(num==3){
num=0;
n++;
}
}
EXFILE:
FileRead_close(fp);
// ちゃんと代入されているか表示
for(int i=0;i<n;i++){
printfDx("名前:%s\n",touroku_data[i].name);
printfDx("技名:%s\n",touroku_data[i].wazamei);
printfDx("タイプ:%d\n",touroku_data[i].type);
}
WaitKey() ; // キー入力待ち
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ;
}
ビルドすると、
case 0: touroku_data[n].name=inputc;break;
case 1: touroku_data[n].wazamei=inputc;break;
のところで、
「左のオペランドが、左辺値になっていません。」と出てしまいます。
代入する型が合ってないのが原因と思い、
case 0: touroku_data[n].name=itoa(inputc);break;
case 1: touroku_data[n].wazamei=itoa(inputc);break;
にすると
「'itoa' : 関数に 1 個の引数を指定できません。」と出てしまいます。
case 0: touroku_data[n].name=inputc;break;
case 1: touroku_data[n].wazamei=inputc;break;
の部分はどういう風に記述したらよいのでしょうか?
どなたか教えてください。
また他にもプログラム記述がおかしい箇所があれば教えてください。