無題

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

無題

#1

投稿記事 by ミラクル » 16年前

ファイル読み込みの際に引数を受け取った時、
例えば
実行ファイルが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:無題

#2

投稿記事 by 御津凪 » 16年前

確信はありませんが、パスの先頭の"/"が原因かと思います。

non

Re:無題

#3

投稿記事 by non » 16年前

UNIXですか?
fileというファイル名ではなくfileという変数に入っているファイルをオープンしたいのでしょうか?

ミラクル

Re:無題

#4

投稿記事 by ミラクル » 16年前

ありがとうございます。
おっしゃるとおりfileという変数に入っているファイルを
パスで指定して読み取りたいんですけどうまくいかなくて.

Mist

Re:無題

#5

投稿記事 by Mist » 16年前

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

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

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

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

non

Re:無題

#6

投稿記事 by non » 16年前

UNIXって使ったことないので自信ないけど・・
こんなんじゃだめですか?

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

non

Re:無題

#7

投稿記事 by non » 16年前

間違った。
strcpy(file,"/local/");
strcat(file,val);
fp = fopen(file,"r");

閉鎖

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