龍神録11章エクセルについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
F

龍神録11章エクセルについて

#1

投稿記事 by F » 14年前

龍神録11章で記述どおりに打った場合
'fname' : 指定された配列には、初期化子が多すぎます。と出て起動できません。
ためしにサンプルを使って試したところ、上と同じエラーが発生するのですが、
どうすればいいでしょうか。

Dixq (管理人)

Re:龍神録11章エクセルについて

#2

投稿記事 by Dixq (管理人) » 14年前

fnameを宣言している周辺のコードをここに投稿して頂けませんか?
または配布しているプロジェクトの11章と見比べると違いがわかると思います。

F

Re:龍神録11章エクセルについて

#3

投稿記事 by F » 14年前

//敵の出現情報をエクセルから読み込んで格納する関数
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);
}

サンプル通りに打ち変えましたので打ち間違えはないと思います

みけCAT

Re:龍神録11章エクセルについて

#4

投稿記事 by みけCAT » 14年前

fname[32]の32を1000くらいにするか消してみてください。
消すのがいいと思います。

みけCAT

Re:龍神録11章エクセルについて

#5

投稿記事 by みけCAT » 14年前

もしかして「storyH0.csvの場所」とそのまま打ち込んでコンパイルしようとしていますか?
もしそうでしたら、
「storyH0.csvの場所」の所をstoryH0.csvのパスに書き換えてからコンパイルしてみてください。

みけCAT

Re:龍神録11章エクセルについて

#6

投稿記事 by みけCAT » 14年前

"storyH0.csvの場所"を囲んでいる{}を
外したらどうなりますか?

初級者

Re:龍神録11章エクセルについて

#7

投稿記事 by 初級者 » 14年前

仮に、今抱えているエラーが直ったとしても、
fpがint型である限り、いずれ破綻することでしょう。

本当に「サンプルをそのまま」使ってますか?

Dixq (管理人)

Re:龍神録11章エクセルについて

#8

投稿記事 by Dixq (管理人) » 14年前

char fname[32]={"storyH0.csvの場所"};

ここが一番知りたかったのですが、投稿時に変更していませんか?
要素の数が複数になっているのではないかと思うのですが。
ちなみに上記のプログラムならコンパイルエラーは出ません。
実行後に「read error」は表示されますが。

> 初級者さん

FileRead_open関数の返り値はint型なので、fpはintで良いと思います。
ただfpという名前がいかにもポインタを表しているようで適切ではありませんでしたね。
よくあるファイルポインタと同じ感覚で使えるDXライブラリの関数なので、fpとしてしまいました。

初級者

Re:龍神録11章エクセルについて

#9

投稿記事 by 初級者 » 14年前

>質問者さん、管理人さん

fp←→ファイルポインタ
という刷り込みがありまして、
よく知りもしないのに投稿しました。
失礼いたしました。

F

Re:龍神録11章エクセルについて

#10

投稿記事 by F » 14年前

fname[32]を[1000]で動きました。
ありがとうございます

閉鎖

“C言語何でも質問掲示板” へ戻る