プロが教える店舗&オフィスのセキュリティ対策術

int i;
FILE *fp[5];

//ここの宣言がわかりません
char *(filename[5])={"1.txt","2.txt","3.txt","4.txt","5.txt};

for(i=0;i<5;i++)
fp[i]=fopen(filename[i],"w");

のようなことをしたいのですが、ファイル名を複数個配列に格納するにはどのようにしたらいいんでしょうか?
回答お願いします。

A 回答 (2件)

const char * const filename[5] ={ "1.txt","2.txt","3.txt","4.txt","5.txt" };



でよいのでは?

この回答への補足

回答ありがとうございます。
回答いただいた方法だと上手くいったんですが、質問には書いてなかったんですがファイルポインタを構造体にしていて、

typedef struct file{
FILE *fp;
char *filename;
}sFILE;

sFILE fp[5];
const char * const name[5]={"1.txt","2.txt","3.txt","4.txt","5.txt"};

for(i=0;i<5;i++){
fp[i].fp=NULL;
fp[i].filename=name[i];//←
}

としたかったんですが、構造体にすると//←の部分でエラーになってしまいます。
この場合どのようにしたらいいのでしょうか?

補足日時:2005/10/19 23:34
    • good
    • 1
この回答へのお礼

すいません。勘違いだったみたいで↓でうまくいきました。

typedef struct file{
FILE *fp;
char *filename;
}sFILE;

sFILE fp[5];
char *name[5]={"1.txt","2.txt","3.txt","4.txt","5.txt"};

for(i=0;i<5;i++){
fp[i].fp=NULL;
fp[i].filename=name[i];
}

お礼日時:2005/10/20 01:53

"オープンしたい"ファイル名(文字列)の配列とオープンしたファイルへのポインタの配列とは別物ですよ。


FILE *fp はオープンしたファイルへのポインタを格納しますからファイル名("1.txt")への文字列ポインタではありません。
ですので、
char filename[ ] = { "abc.txt", "def.txt"などなど };
FILE *fp[ 5];
という具合に二つの配列を宣言しておいて、
for ( ... )
fp[i] = fopen( filename[i], ..... )
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています