とても気になっていました。
質問箇所のコードをコピペして貼ります
//敵の出現情報をエクセルから読み込んで格納する関数
void load_story(){
int n,num,i,fp;
char fname[32]={"../dat/csv/storyH0.csv"}; //(質問)なぜ配列数は32個なのか(以下2行同様64個なのか?)
int input[64];
char inputc[64]; //(質問)256ではだめなのか?
fp = FileRead_open(fname);//ファイル読み込み //(質問)fpがint型なのはなぜ?char型だとどうなるのか?
if(fp == NULL){
printfDx("read error\n");
return;
}
for(i=0;i<2;i++)//最初の2行読み飛ばす
while(FileRead_getc(fp)!='\n');
n=0 , num=0;
while(1){
for(i=0;i<64;i++){
inputc[i]=input[i]=FileRead_getc(fp);//1文字取得する
if(inputc[i]=='/'){//スラッシュがあれば //(質問)スラッシュなんてない(あるのは意味はわからないが「-1」という値)
while(FileRead_getc(fp)!='\n');//改行までループ
i=-1;//カウンタを最初に戻して //(質問)なんで「-1」なのか?
continue;
}
if(input[i]==',' || input[i]=='\n'){//カンマか改行なら //(質問)改行は何が基準なのか?どうすれば改行とみなされる?(txtファイルの場合は?)
inputc[i]='\0';//そこまでを文字列とし
break;
}
if(input[i]==EOF){//ファイルの終わりなら
goto EXFILE;//終了
}
}
switch(num){ //(質問)ここは、「inputc(char型)」で受け取った値を正数値(int型)に直して代入、ということでよいのか・・・
case 0: enemy_order[n].cnt =atoi(inputc);break;
case 1: enemy_order[n].pattern =atoi(inputc);break;
case 2: enemy_order[n].knd =atoi(inputc);break;
case 3: enemy_order[n].x =atof(inputc);break;
case 4: enemy_order[n].y =atof(inputc);break;
case 5: enemy_order[n].sp =atof(inputc);break;
case 6: enemy_order[n].bltime =atoi(inputc);break;
case 7: enemy_order[n].blknd =atoi(inputc);break;
case 8: enemy_order[n].col =atoi(inputc);break;
case 9: enemy_order[n].hp =atoi(inputc);break;
case 10:enemy_order[n].blknd2 =atoi(inputc);break;
case 11:enemy_order[n].wait =atoi(inputc);break;
case 12:enemy_order[n].item_n[0]=atoi(inputc);break;
case 13:enemy_order[n].item_n[1]=atoi(inputc);break;
case 14:enemy_order[n].item_n[2]=atoi(inputc);break;
case 15:enemy_order[n].item_n[3]=atoi(inputc);break;
case 16:enemy_order[n].item_n[4]=atoi(inputc);break;
case 17:enemy_order[n].item_n[5]=atoi(inputc);break;
}
num++;
if(num==18){
num=0;
n++;
}
}
EXFILE:
FileRead_close(fp);
}
質問もコード内に書いてしまいましたが・・・
それと、ダウンロードしたcsvファイル内の「-1」とはなんなのでしょうか?どのように利用されるのでしょうか?
ご教授お願いします。