龍神録11章で記述どおりに打った場合
'fname' : 指定された配列には、初期化子が多すぎます。と出て起動できません。
ためしにサンプルを使って試したところ、上と同じエラーが発生するのですが、
どうすればいいでしょうか。
龍神録11章エクセルについて
Re:龍神録11章エクセルについて
fnameを宣言している周辺のコードをここに投稿して頂けませんか?
または配布しているプロジェクトの11章と見比べると違いがわかると思います。
または配布しているプロジェクトの11章と見比べると違いがわかると思います。
Re:龍神録11章エクセルについて
//敵の出現情報をエクセルから読み込んで格納する関数
void load_story(){
int n,num,i,fp;
char fname[32]={"storyH0.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++)//最初の2行読み飛ばす
while(FileRead_getc(fp)!='\n');
n=0 , num=0;
while(1){
for(i=0;i<64;i++){
inputc=input=FileRead_getc(fp);//1文字取得する
if(inputc=='/'){//スラッシュがあれば
while(FileRead_getc(fp)!='\n');//改行までループ
i=-1;//カウンタを最初に戻して
continue;
}
if(input==',' || input=='\n'){//カンマか改行なら
inputc='\0';//そこまでを文字列とし
break;
}
if(input==EOF){//ファイルの終わりなら
goto EXFILE;//終了
}
}
switch(num){
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);
}
サンプル通りに打ち変えましたので打ち間違えはないと思います
void load_story(){
int n,num,i,fp;
char fname[32]={"storyH0.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++)//最初の2行読み飛ばす
while(FileRead_getc(fp)!='\n');
n=0 , num=0;
while(1){
for(i=0;i<64;i++){
inputc=input=FileRead_getc(fp);//1文字取得する
if(inputc=='/'){//スラッシュがあれば
while(FileRead_getc(fp)!='\n');//改行までループ
i=-1;//カウンタを最初に戻して
continue;
}
if(input==',' || input=='\n'){//カンマか改行なら
inputc='\0';//そこまでを文字列とし
break;
}
if(input==EOF){//ファイルの終わりなら
goto EXFILE;//終了
}
}
switch(num){
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);
}
サンプル通りに打ち変えましたので打ち間違えはないと思います
Re:龍神録11章エクセルについて
もしかして「storyH0.csvの場所」とそのまま打ち込んでコンパイルしようとしていますか?
もしそうでしたら、
「storyH0.csvの場所」の所をstoryH0.csvのパスに書き換えてからコンパイルしてみてください。
もしそうでしたら、
「storyH0.csvの場所」の所をstoryH0.csvのパスに書き換えてからコンパイルしてみてください。
Re:龍神録11章エクセルについて
仮に、今抱えているエラーが直ったとしても、
fpがint型である限り、いずれ破綻することでしょう。
本当に「サンプルをそのまま」使ってますか?
fpがint型である限り、いずれ破綻することでしょう。
本当に「サンプルをそのまま」使ってますか?
Re:龍神録11章エクセルについて
char fname[32]={"storyH0.csvの場所"};
ここが一番知りたかったのですが、投稿時に変更していませんか?
要素の数が複数になっているのではないかと思うのですが。
ちなみに上記のプログラムならコンパイルエラーは出ません。
実行後に「read error」は表示されますが。
> 初級者さん
FileRead_open関数の返り値はint型なので、fpはintで良いと思います。
ただfpという名前がいかにもポインタを表しているようで適切ではありませんでしたね。
よくあるファイルポインタと同じ感覚で使えるDXライブラリの関数なので、fpとしてしまいました。
ここが一番知りたかったのですが、投稿時に変更していませんか?
要素の数が複数になっているのではないかと思うのですが。
ちなみに上記のプログラムならコンパイルエラーは出ません。
実行後に「read error」は表示されますが。
> 初級者さん
FileRead_open関数の返り値はint型なので、fpはintで良いと思います。
ただfpという名前がいかにもポインタを表しているようで適切ではありませんでしたね。
よくあるファイルポインタと同じ感覚で使えるDXライブラリの関数なので、fpとしてしまいました。