敵情報をエクセルで作って読み込む(11章)ための関数ですが、大半は理解できたものの、一部分が分からないです。
実際に配列に読み込むwhileループの一番最初のIF文は何のためにあるのでしょうか?
if(inputc[i]=='/'){//スラッシュがあれば
while(FileRead_getc(fp)!='\n');//改行までループ
i=-1;//カウンタを最初に戻して
continue;
}void load_enemy_deta(){
int n=1,num=0,i,fp,exit=0;//nは行、numは列をループで回すための変数。fpはファイル展開用。exitはEOFまで行った時の脱出用。
char fname[32]={"enemy_list.csv"};
int input[64];//次の文字がなんなのかを判断するために使う。
char inputc[64];//こちらが読み込み本命
fp = FileRead_open(fname);//ファイル展開
if(fp == NULL){
printfDx("read error\n");//読み込みエラーを告知する
return;
}
for(i=0;i<2;i++)while(FileRead_getc(fp)!='\n');//はじめの二行を飛ばす(説明文のため)
while(1){
for(i=0;i<64;i++){
inputc[i]=input[i]=FileRead_getc(fp);//1文字取得する
if(inputc[i]=='/'){//スラッシュがあれば
while(FileRead_getc(fp)!='\n');//改行までループ
i=-1;//カウンタを最初に戻して
continue;
}
if(input[i]==',' || input[i]=='\n'){//カンマか改行なら
inputc[i]='\0';//そこまでを文字列とし
break;
}
if(input[i]==EOF){//ファイルの終わりなら
exit=1;//終了
break;
}
}
switch(num){
case 0: enemy_order[n].cnt =atoi(inputc);break;//atoi("文字列")は"文字列"が数字ならその数値を返す。
case 1: enemy_order[n].Ctrl_type =atoi(inputc);break;//もし数字ではない"文字列"が入っていたら0を返す。
case 2: enemy_order[n].enemy_type =atoi(inputc);break;//しかし"文字列"の先頭が数字であるなら、その数値を返す。
case 3: enemy_order[n].x =atof(inputc);break;
case 4: enemy_order[n].y =atof(inputc);break;
}
num++;
if(num==5){
num=0;
n++;//一行読み込み終えたら次の行へ
}
if(exit==1)break;
}
FileRead_close(fp);
}