カレントディレクトリなんですが・・・

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

カレントディレクトリなんですが・・・

#1

投稿記事 by first » 14年前

カレントディレクトリのファイル名/フォルダ名を表示してください。
 または、カレントディレクトリのパスを表示してください。
ヒントワード: 「system( "dir" );」「stdlib.h」
という問題があるのですが
まずカレントディクトリがわかりません。できるだけわかりやすくおしえていただけないでしょうか?
そして、上記の問題のヒントもおしえていただけないでしょうか
よろしくおねがいします

fulls
記事: 72
登録日時: 14年前
住所: 埼玉

Re: カレントディレクトリなんですが・・・

#2

投稿記事 by fulls » 14年前

カレントディレクトリは自分自身がちゃんとわかっているかわからないのでパスで...

ヒントのsystem("dir");というのはdirとコマンドプロンプトプロンプトに打ち込んで実行しろという意味です。
stdlib.hをインクルードする必要があります。
コマンドプロンプトで dir とはファイルやディレクトリの情報を表示させる為のものです。

アバター
HolyWings
記事: 12
登録日時: 14年前

Re: カレントディレクトリなんですが・・・

#3

投稿記事 by HolyWings » 14年前

カレントディレクトリは 、英語で表すと current directory となり 現在の作業ディレクトリのことです。

初期状態では、実行しているプログラムのあるディレクトリに設定されています。


system( "dir" ); は、 カレントディレクトリにあるファイルやディレクトリをコマンドプロンプトに表示する命令です。

それから、カレントディレクトリのパスを表示する命令は system( "cd" ); なので試してみてください。

first

Re: カレントディレクトリなんですが・・・

#4

投稿記事 by first » 14年前

お二方どうもありがとうございます
おかげさまで問題を解くことができました

ですがまたわからない問題にぶちあたってしまいました

この問題です

Cドライブ直下のファイル名/フォルダ名を表示してください。
ヒントワード: 「コマンドプロンプトについて調べる」「C:¥」

わからないところは表示のやりかたと表示したいファイル名/フォルダ名までのたどりつき方の2つがわかりません
教えていただけないでしょうか?よろしくお願いします

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: カレントディレクトリなんですが・・・

#5

投稿記事 by softya(ソフト屋) » 14年前

コマンドプロンプトに関してはどこまで調べられたのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

first

Re: カレントディレクトリなんですが・・・

#6

投稿記事 by first » 14年前

すみません

おっしゃっておられる意味がわかりません

どういう意味か教えていただけないでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: カレントディレクトリなんですが・・・

#7

投稿記事 by softya(ソフト屋) » 14年前

ヒントワード: 「コマンドプロンプトについて調べる」
とあるのですが、コマンドプロンプトが何か、どんな事が出来るのか調べられましたか?
コマンドプロンプトに関して、ご存知のことを教えてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
ゆーずぃ
記事: 62
登録日時: 14年前
住所: 埼玉県

Re: カレントディレクトリなんですが・・・

#8

投稿記事 by ゆーずぃ » 14年前

横から失礼します。

2回目の質問も考え方は最初のと同じです。なので、答えは既にyucky001さん、HolyWingsさんが提示しており、それぞれのコマンドを理解出来ていれば解ける問題です(cdに関しては引数が必要になりますが)。

先ほど最初の質問は解決したとおっしゃいましたが、それぞれのコマンドの意味等はご自分でも調べられましたか?
皆さんは適当なコマンドを教えたわけではないので、ちゃんとそれぞれには意味があります。
毎度答えだけ訊いて組み立てるのでは回答者も辟易しますし、何よりもfirstさんの為になりません。
せっかく使い道と使い方をセットで覚えられる機会を得たのですから、

「言われたものをなんとなく使ったら出来ちゃった」

から一歩踏み出して、ご自分の理解に繋げてみませんか(^-^)

僭越ながら、softya(ソフト屋)さんのご質問もそういった趣旨だと思います。

とりあえずとして、「コマンドプロンプト」「system()関数」「dir」「cd」なんかを調べてみてはいかがでしょう?

アバター
bitter_fox
記事: 607
登録日時: 14年前
住所: 大阪府

Re: カレントディレクトリなんですが・・・

#9

投稿記事 by bitter_fox » 14年前

ゆーずぃ さんが書きました: 2回目の質問も考え方は最初のと同じです。なので、答えは既にyucky001さん、HolyWingsさんが提示しており、それぞれのコマンドを理解出来ていれば解ける問題です(cdに関しては引数が必要になりますが)。
「cdに関しては」とありますがcdコマンドでカレントディレクトリを変えてから、dirコマンドで表示するという二回system関数を使った解法を意図しているのでしょうか?
もし二回system関数を使用した解法を意図しているのでなければ次は無視してください。

system関数は新しい子シェルを作成して第一引数に指定されたコマンドを実行した後作成したシェルを削除して制御を返します。
ですので、
system("cd ..");
system("md hogehoge");
とした際は
[実行する際のカレントディレクトリ\..]ではなく[実行する際のカレントディレクトリ]にhogehogeディレクトリが作成されてしまいます。
(過去にこの仕様で何時間も悩んだw)

なので、実際の解法は「引数に表示するディレクトリを指定したdirコマンド」になるのではないでしょうか?
[hr][修正]
実行したディレクトリ->実行する際のカレントディレクトリ

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: カレントディレクトリなんですが・・・

#10

投稿記事 by ISLe » 14年前

横道に逸れますが知っていると便利なので記します。
#既にご存知だったらごめんなさい。
bitter_fox さんが書きました:system("cd ..");
system("md hogehoge");
とした際は
[実行する際のカレントディレクトリ\..]ではなく[実行する際のカレントディレクトリ]にhogehogeディレクトリが作成されてしまいます。
(過去にこの仕様で何時間も悩んだw)
コマンド単体であればオプションで対象ディレクトリを指定するのがシンプルですが、複数のコマンドを連続して実行したいときは
system("cd .. && md hogehoge");
というふうにするとシンプルになる場合があると思います。
ちなみに&&でコマンドを繋ぐと直前のコマンドがエラー終了すると実行を中止します。||で繋ぐと中止しません。

アバター
bitter_fox
記事: 607
登録日時: 14年前
住所: 大阪府

Re: カレントディレクトリなんですが・・・

#11

投稿記事 by bitter_fox » 14年前

ISLe さんが書きました:横道に逸れますが知っていると便利なので記します。
#既にご存知だったらごめんなさい。
bitter_fox さんが書きました:system("cd ..");
system("md hogehoge");
とした際は
[実行する際のカレントディレクトリ\..]ではなく[実行する際のカレントディレクトリ]にhogehogeディレクトリが作成されてしまいます。
(過去にこの仕様で何時間も悩んだw)
コマンド単体であればオプションで対象ディレクトリを指定するのがシンプルですが、複数のコマンドを連続して実行したいときは
system("cd .. && md hogehoge");
というふうにするとシンプルになる場合があると思います。
ちなみに&&でコマンドを繋ぐと直前のコマンドがエラー終了すると実行を中止します。||で繋ぐと中止しません。
おぉ、&&で繋げば正常に実行できたんですか。
SetCurrentDirectory関数を使って解決したのですが、この方法ならスマートに書けますね。

first

Re: カレントディレクトリなんですが・・・

#12

投稿記事 by first » 14年前

みなさん、ありがとうございます。
ゆーずぃさんのおっしゃる通りに、「コマンドプロンプト」「system()関数」「dir」「cd」を調べてみたいと思います。

softya(ソフト屋)さん質問へのお答えはそのあとでよろしいでしょうか?

first

Re: カレントディレクトリなんですが・・・

#13

投稿記事 by first » 14年前

コマンドプロンプトについて調べてみました

プログラムの実行ができる

デイレクトリ(ファイル名)を参照できる

コマンドプロンプトからペイントやメモ帳を開ける

dir・・・ディレクトリを表示できるコマンド

cd・・・ディレクトリの切り替えができるコマンド

すみません
このくらいしか調べることができませんでした

そして問題なんですが

system("dir C:\\");

上のやりかたで解くことができました

dirはわかっていたのですがC:\\の書き方や書く位置がわかりませんでした

ですが解けたといっても適当にやって偶然見つけたのでこれからも勉強しようと思います

ありがとうございました

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: カレントディレクトリなんですが・・・

#14

投稿記事 by softya(ソフト屋) » 14年前

こちらが参考になると思います。

「初めてのコマンドプロンプト/Command Prompt」
http://www5f.biglobe.ne.jp/~ayum/command/command.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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