ページ 11

無題

Posted: 2009年5月27日(水) 15:31
by ウズ
またお世話になります。

C言語で、カレントディレクトリをファイルに出力したいのですが、
うまくいきません。

fprintf(fp, " DIRECTORY: %s\n", system("pwd > /dev/null 2>&1"));

と書いたのですが、(fpはファイルポインタです)

コンパイルでwarningがでてしまいます。
warning: format argument is not a pointer (arg 3)

どうすればちゃんと出力できますか??

Re:無題

Posted: 2009年5月27日(水) 15:46
by lbfuvab
う~ん、GetCurrentDirectory関数を使った方が楽な気がしますが……

Re:無題

Posted: 2009年5月27日(水) 15:47
by Blue
system関数の戻り値はintです。
printfの%sはint型の書式文字ではありません。

Re:無題

Posted: 2009年5月27日(水) 15:50
by 御津凪
getcwd が使えればそれで取得できますよ。
確かC標準ライブラリに入っています。

Re:無題

Posted: 2009年5月27日(水) 15:54
by Blue
>getcwd が使えればそれで取得できますよ。
ですね。
http://www.linux.or.jp/JM/html/LDP_man- ... cwd.3.html

Re:無題

Posted: 2009年5月27日(水) 15:58
by Mist
ネットで調べても分からなかったのですが、pwdの戻り値はディレクトリ文字列のアドレスなのでしょうか??
もし、そうであれば

(char*)system("pwd > /dev/null 2>&1")

で出来るとは思いますが・・・


> lbfuvabさん

pwdはUNIXコマンドなので質問者さんの開発環境はUNIX系ではないでしょうか。

Re:無題

Posted: 2009年5月27日(水) 16:11
by ウズ
>lbfuvab様
>Blue様
>御津凪様
>Mist様
皆様、返信ありがとうございます。
getcwdが使えそうとのことですので、それでやってみます。
おっしゃるとおり開発環境はSolarisなのでUNIX系です。。

Re:無題

Posted: 2009年5月27日(水) 16:35
by たかぎ
getcwdを使えば解決しますが、外部コマンドのpwdを使うのであれば、systemではなくpopenを使った方がよいかと思います。

Re:無題

Posted: 2009年5月28日(木) 13:14
by ウズ
皆様ありがとうございました。
おかげさまで解決しました!