何故文字列が正常に代入されないのか、どうしたら格納できるようになるのかどなたかご指摘をお願いします。
また、'\r'を読み込むことによる誤動作を防ぎたくて60~64行目の記述を加えたのですが、この部分を反映させるとtextc[0]が0になってしまうようなのでコメントアウトしています。こちらの理由もよろしければ一緒によろしくお願いします。
#define NameMaxSize 32//名前の最大文字数
#define NomalTipsMax 304//1枚のノーマルタイルセットのタイルの最大数
#define TileSetMax 4//タイルセットの種類
#define MapKindMax 5//マップの数
#define NAME_INICASE 0
#define ATILE_INICASE 1
#define NTILE_INICASE 8
#define PANORAMA_INICASE 9
#define FOGPIC_INICASE 10
#define FOGALP_INICASE 11
#define FOGBLE_INICASE 12
#define FOGZOM_INICASE 13
#define FOGSX_INICASE 14
#define FOGSY_INICASE 15
#define ATILEPRI_INICASE 16
#define NTILEPRI_INICASE 23
struct TileSetData{
char name[NameMaxSize];//名前
int ATileID[7];//オートタイルID
int NTileID;//ノーマルタイルID
int fog_alpha;//α値
int fog_blend;//合成方法(0:通常,1:加算,2:減算)
int fog_zoom;//拡大率
int fog_sx,fog_sy;//スクロール速度
int Apri[7];//オートタイルプライオリティ
int Npri[NomalTipsMax];//ノーマルタイルプライオリティ
};
struct TileSetData TileSet[TileSetMax];
int panoramapic[MapKindMax];//パノラマ画像
int fogpic[MapKindMax];//フォグ画像
void TileSet_ini(){
//txt読み込み用
int file,i,n=0,m=0,ed=0;
int text[NameMaxSize];
char textc[NameMaxSize];
//画像取り込み用
char FPass1[] = "./Data/Pics/Fogs/";
char FPass2[] = "./Data/Pics/Panoramas/";
char Exten[] = ".png";
char pass[64];
//ファイル取り込み
file = FileRead_open( "./Data/Txt/TileSetData.txt" ) ;
if(file==NULL){printfDx("read error\n");return;}
while(1){
//ファイル読み込み
for(i=0;i<NameMaxSize;i++){
text[i] = FileRead_getc(file);
textc[i] = text[i];
//'/'なら改行
if(textc[i]=='/'){
while(FileRead_getc(file)!='\n'){
i=-1;
continue;
}
}
/*//'\r'はスルー
if(text[i]=='\r' ){
i=-1;
continue;
}*/
//コンマか改行なら読み込み停止
if(text[i]==',' || text[i]=='\n'){
textc[i]='\0';
break;
}
//文章が終わったら関数終了
if(text[i]==EOF){
ed=1;
break;
}
}
if(ed==1){FileRead_close(file);break;}
//取り込んだ文字列をデータとして格納
if(m==NAME_INICASE){
strcpy(TileSet[n].name,textc);
}
else if(m>=ATILE_INICASE && m<NTILE_INICASE){
TileSet[n].ATileID[m-ATILE_INICASE] = atoi(textc);
}
else if(m==NTILE_INICASE){
TileSet[n].NTileID = atoi(textc);
}
else if(m==PANORAMA_INICASE){
if(strcmp(textc,"nil")==0){panoramapic[n]=MakeGraph( 640 , 480 ) ;}
else{
strcpy(pass,FPass2);strcat(pass,textc);strcat(pass,Exten);
panoramapic[n] = LoadGraph(pass);
memset(pass, 0, sizeof(pass));
}
}
else if(m==FOGPIC_INICASE){
if(strcmp(textc,"nil")==0){fogpic[n]=MakeGraph( 640 , 480 ) ;}
else{
strcpy(pass,FPass1);strcat(pass,textc);strcat(pass,Exten);
fogpic[n] = LoadGraph(pass);
memset(pass, 0, sizeof(pass));
}
}
else if(m==FOGALP_INICASE){
TileSet[n].fog_alpha = atoi(textc);
}
else if(m==FOGBLE_INICASE){
TileSet[n].fog_blend = atoi(textc);
}
else if(m==FOGZOM_INICASE){
TileSet[n].fog_zoom = atoi(textc);
}
else if(m==FOGSX_INICASE){
TileSet[n].fog_sx = atoi(textc);
}
else if(m==FOGSY_INICASE){
TileSet[n].fog_sy = atoi(textc);
}
else if(m>=ATILEPRI_INICASE && m<NTILEPRI_INICASE){
TileSet[n].Apri[m-ATILEPRI_INICASE] = atoi(textc);
}
else if(m>=NTILEPRI_INICASE && m<NTILEPRI_INICASE+NomalTipsMax){
TileSet[n].Npri[m-NTILEPRI_INICASE] = atoi(textc);
if(m==NTILEPRI_INICASE+NomalTipsMax-1){
m=0;
n++;
continue;
}
}
m++;
}
}