ページ 11

無題

Posted: 2008年11月28日(金) 11:38
by ミラクル
ファイル読み込みの際に引数を受け取った時、
例えば
実行ファイルがsampleだとして
sample "テキストファイル"
のようにテキストファイルを引数にした場合
で下記のようなパスがつくとうまくいかなくて,
fp = fopen("/local/file","r"); のところを
fp = fopen(file,"r")にするとうまくいくんですけど
なにがわるいんでしょうか??


#define MN 256
int main(int argc,char **argv){

test(argv[1]);

}

int test(char val[MN]){

FILE *fp;
char file[MN];
strcpy(file,val);

fp = fopen("/local/file","r");

・・・・

}

Re:無題

Posted: 2008年11月28日(金) 11:45
by 御津凪
確信はありませんが、パスの先頭の"/"が原因かと思います。

Re:無題

Posted: 2008年11月28日(金) 11:46
by non
UNIXですか?
fileというファイル名ではなくfileという変数に入っているファイルをオープンしたいのでしょうか?

Re:無題

Posted: 2008年11月28日(金) 11:48
by ミラクル
ありがとうございます。
おっしゃるとおりfileという変数に入っているファイルを
パスで指定して読み取りたいんですけどうまくいかなくて.

Re:無題

Posted: 2008年11月28日(金) 11:54
by Mist
> fp = fopen("/local/file","r");

これではlocalフォルダにあるfileという名前ファイルを開こうとしています。
char filepath[MN + 20];

    sprintf(filepath, "/local/%s", file);

    fp = fopen(filepath, "r");
というようにしなければいけません。
たぶん、文字列の扱いについての知識が不足していると思います。

Re:無題

Posted: 2008年11月28日(金) 11:57
by non
UNIXって使ったことないので自信ないけど・・
こんなんじゃだめですか?

strcpy(file,"/local/file");
strcat(file,val);
fp = fopen(file,"r");

Re:無題

Posted: 2008年11月28日(金) 11:58
by non
間違った。
strcpy(file,"/local/");
strcat(file,val);
fp = fopen(file,"r");