ページ 1 / 1
カレントディレクトリなんですが・・・
Posted: 2011年5月20日(金) 16:15
by first
カレントディレクトリのファイル名/フォルダ名を表示してください。
または、カレントディレクトリのパスを表示してください。
ヒントワード: 「system( "dir" );」「stdlib.h」
という問題があるのですが
まずカレントディクトリがわかりません。できるだけわかりやすくおしえていただけないでしょうか?
そして、上記の問題のヒントもおしえていただけないでしょうか
よろしくおねがいします
Re: カレントディレクトリなんですが・・・
Posted: 2011年5月20日(金) 20:56
by fulls
カレントディレクトリは自分自身がちゃんとわかっているかわからないのでパスで...
ヒントのsystem("dir");というのはdirとコマンドプロンプトプロンプトに打ち込んで実行しろという意味です。
stdlib.hをインクルードする必要があります。
コマンドプロンプトで dir とはファイルやディレクトリの情報を表示させる為のものです。
Re: カレントディレクトリなんですが・・・
Posted: 2011年5月21日(土) 00:57
by HolyWings
カレントディレクトリは 、英語で表すと current directory となり 現在の作業ディレクトリのことです。
初期状態では、実行しているプログラムのあるディレクトリに設定されています。
system( "dir" ); は、 カレントディレクトリにあるファイルやディレクトリをコマンドプロンプトに表示する命令です。
それから、カレントディレクトリのパスを表示する命令は system( "cd" ); なので試してみてください。
Re: カレントディレクトリなんですが・・・
Posted: 2011年5月23日(月) 12:19
by first
お二方どうもありがとうございます
おかげさまで問題を解くことができました
ですがまたわからない問題にぶちあたってしまいました
この問題です
Cドライブ直下のファイル名/フォルダ名を表示してください。
ヒントワード: 「コマンドプロンプトについて調べる」「C:¥」
わからないところは表示のやりかたと表示したいファイル名/フォルダ名までのたどりつき方の2つがわかりません
教えていただけないでしょうか?よろしくお願いします
Re: カレントディレクトリなんですが・・・
Posted: 2011年5月23日(月) 12:23
by softya(ソフト屋)
コマンドプロンプトに関してはどこまで調べられたのでしょうか?
Re: カレントディレクトリなんですが・・・
Posted: 2011年5月23日(月) 12:30
by first
すみません
おっしゃっておられる意味がわかりません
どういう意味か教えていただけないでしょうか?
Re: カレントディレクトリなんですが・・・
Posted: 2011年5月23日(月) 12:33
by softya(ソフト屋)
ヒントワード: 「コマンドプロンプトについて調べる」
とあるのですが、コマンドプロンプトが何か、どんな事が出来るのか調べられましたか?
コマンドプロンプトに関して、ご存知のことを教えてください。
Re: カレントディレクトリなんですが・・・
Posted: 2011年5月23日(月) 14:55
by ゆーずぃ
横から失礼します。
2回目の質問も考え方は最初のと同じです。なので、答えは既にyucky001さん、HolyWingsさんが提示しており、それぞれのコマンドを理解出来ていれば解ける問題です(cdに関しては引数が必要になりますが)。
先ほど最初の質問は解決したとおっしゃいましたが、それぞれのコマンドの意味等はご自分でも調べられましたか?
皆さんは適当なコマンドを教えたわけではないので、ちゃんとそれぞれには意味があります。
毎度答えだけ訊いて組み立てるのでは回答者も辟易しますし、何よりもfirstさんの為になりません。
せっかく使い道と使い方をセットで覚えられる機会を得たのですから、
「言われたものをなんとなく使ったら出来ちゃった」
から一歩踏み出して、ご自分の理解に繋げてみませんか(^-^)
僭越ながら、softya(ソフト屋)さんのご質問もそういった趣旨だと思います。
とりあえずとして、「コマンドプロンプト」「system()関数」「dir」「cd」なんかを調べてみてはいかがでしょう?
Re: カレントディレクトリなんですが・・・
Posted: 2011年5月23日(月) 15:33
by bitter_fox
ゆーずぃ さんが書きました:
2回目の質問も考え方は最初のと同じです。なので、答えは既にyucky001さん、HolyWingsさんが提示しており、それぞれのコマンドを理解出来ていれば解ける問題です(cdに関しては引数が必要になりますが)。
「cdに関しては」とありますがcdコマンドでカレントディレクトリを変えてから、dirコマンドで表示するという二回system関数を使った解法を意図しているのでしょうか?
もし二回system関数を使用した解法を意図しているのでなければ次は無視してください。
system関数は新しい子シェルを作成して第一引数に指定されたコマンドを実行した後作成したシェルを削除して制御を返します。
ですので、
system("cd ..");
system("md hogehoge");
とした際は
[実行する際のカレントディレクトリ\..]ではなく[実行する際のカレントディレクトリ]にhogehogeディレクトリが作成されてしまいます。
(過去にこの仕様で何時間も悩んだw)
なので、実際の解法は「引数に表示するディレクトリを指定したdirコマンド」になるのではないでしょうか?
[hr][修正]
実行したディレクトリ->実行する際のカレントディレクトリ
Re: カレントディレクトリなんですが・・・
Posted: 2011年5月23日(月) 16:35
by ISLe
横道に逸れますが知っていると便利なので記します。
#既にご存知だったらごめんなさい。
bitter_fox さんが書きました:system("cd ..");
system("md hogehoge");
とした際は
[実行する際のカレントディレクトリ\..]ではなく[実行する際のカレントディレクトリ]にhogehogeディレクトリが作成されてしまいます。
(過去にこの仕様で何時間も悩んだw)
コマンド単体であればオプションで対象ディレクトリを指定するのがシンプルですが、複数のコマンドを連続して実行したいときは
system("cd .. && md hogehoge");
というふうにするとシンプルになる場合があると思います。
ちなみに&&でコマンドを繋ぐと直前のコマンドがエラー終了すると実行を中止します。||で繋ぐと中止しません。
Re: カレントディレクトリなんですが・・・
Posted: 2011年5月23日(月) 16:43
by bitter_fox
ISLe さんが書きました:横道に逸れますが知っていると便利なので記します。
#既にご存知だったらごめんなさい。
bitter_fox さんが書きました:system("cd ..");
system("md hogehoge");
とした際は
[実行する際のカレントディレクトリ\..]ではなく[実行する際のカレントディレクトリ]にhogehogeディレクトリが作成されてしまいます。
(過去にこの仕様で何時間も悩んだw)
コマンド単体であればオプションで対象ディレクトリを指定するのがシンプルですが、複数のコマンドを連続して実行したいときは
system("cd .. && md hogehoge");
というふうにするとシンプルになる場合があると思います。
ちなみに&&でコマンドを繋ぐと直前のコマンドがエラー終了すると実行を中止します。||で繋ぐと中止しません。
おぉ、&&で繋げば正常に実行できたんですか。
SetCurrentDirectory関数を使って解決したのですが、この方法ならスマートに書けますね。
Re: カレントディレクトリなんですが・・・
Posted: 2011年5月24日(火) 09:54
by first
みなさん、ありがとうございます。
ゆーずぃさんのおっしゃる通りに、「コマンドプロンプト」「system()関数」「dir」「cd」を調べてみたいと思います。
softya(ソフト屋)さん質問へのお答えはそのあとでよろしいでしょうか?
Re: カレントディレクトリなんですが・・・
Posted: 2011年6月03日(金) 15:36
by first
コマンドプロンプトについて調べてみました
プログラムの実行ができる
デイレクトリ(ファイル名)を参照できる
コマンドプロンプトからペイントやメモ帳を開ける
dir・・・ディレクトリを表示できるコマンド
cd・・・ディレクトリの切り替えができるコマンド
すみません
このくらいしか調べることができませんでした
そして問題なんですが
system("dir C:\\");
上のやりかたで解くことができました
dirはわかっていたのですがC:\\の書き方や書く位置がわかりませんでした
ですが解けたといっても適当にやって偶然見つけたのでこれからも勉強しようと思います
ありがとうございました
Re: カレントディレクトリなんですが・・・
Posted: 2011年6月04日(土) 12:09
by softya(ソフト屋)