• ベストアンサー

リダイレクト指示について2

C言語初心者です。 よろしくお願いします。 以前にも、同じ内容で質問をしたのですが、もう少し詳しく記載したいと思います。 参考書にあるリダイレクト指示というものを行っているのですが、うまくいきません。 以下に、プログラムを記載しておきます。 ----------------------------------------- /* rdtst.c */ #include<stdio.h> int main(void) { char ss[256]; gets(ss); puts(ss); return 0; } --------------------------------------- ------------実行結果-------------------------------------------- C:\cwork>rdtst enter ////通常の実行//// abcde enter /////キーボードからの入力//// abcde ////画面出力///// C:\cwork>rdtst >aa.txt enter //出力先をaa.txtファイルにする// ABCDE enter ////キーボードから入力//// C:\cwork>type aa.txt enter ////aa.txtの内容を見る//// ---------------------------------------------------------------- 以上のような実行結果になって欲しいのですが、うまくいきません。 以上のプログラムは、参考書に記載されていたものです。 ファイルの置いてある場所をちゃんと指定しなければならないのかと思いましたが、行ってもうまくいきません。 visual studio 2005を使用してC言語で行っております。 ソースファイル「rdtst.c」は、「C:\CCC\redirect」の中にあります。 コマンドプロンプトを使用して、「C:\CCC\redirect>rdtst」と入力しても、「'c:\CCC\redirect' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と表示され実行できません。 リダイレクト指示を実行させるには、どのようにしたらよろしいでしょうか? 教えていただければ嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

>「C:\CCC\redirect\Debug\redirect」と打てば、gets(ss);とputs(ss);による実行は出来ますが、aa.txtに出力するということは出来ません。 >どのようにすればよいでしょうか? カレントディレクトリが「どのディレクトリになっているか判らない状態」で C:\CCC\redirect\Debug\redirect >aa.txt とやってしまうと「どこか判らないディレクトリにaa.txtを作る」ので「aa.txtが行方不明」になります。 当方の説明にあるように「CDコマンド」で、カレントディレクトリを「C:\CCC\Redirect\Debug」に移動させて下さい。 1. DOSプロンプトを開く。 2. C:\Documents and Settings\ログオンしているユーザー名>_ (「_」は点滅してるカーソル) って表示になっている。そうなってない場合も大丈夫なので気にしない。 3. キーボードから「C」「:」「Enter」と打つ。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: って感じになってる筈です。 4. キーボードから「C」「D」「 」(スペース)「C」「:」「\」「C」「C」「C」「\」「r」「e」「d」「i」「r」「e」「c」「t」「\」「D」「e」「b」「u」「g」「Enter」と打つ。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect\Debug C:\CCC\redirect\Debug>_ (「_」は点滅してるカーソル) って感じになってる筈です。 5. キーボードから「r」「e」「d」「i」「r」「e」「c」「t」「Enter」って打って下さい。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect\Debug C:\CCC\redirect\Debug>redirect _ (「_」は点滅してるカーソル) って感じになってる筈です。 6. キーボードから「a」「b」「c」「d」「e」「Enter」って打って下さい。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect\Debug C:\CCC\redirect\Debug>redirect abcde abcde C:\CCC\redirect>_ (「_」は点滅してるカーソル) って感じになってる筈です。 7. キーボードから「r」「e」「d」「i」「r」「e」「c」「t」「 (スペース)」「>」「a」「a」「.」「t」「x」「t」「Enter」って打って下さい。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect\Debug C:\CCC\redirect\Debug>redirect abcde abcde C:\CCC\redirect\Debug>redirect >aa.txt _ (「_」は点滅してるカーソル) って感じになってる筈です。 8. キーボードから「A」「B」「C」「D」「E」「Enter」って打って下さい。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect\Debug C:\CCC\redirect\Debug>redirect abcde abcde C:\CCC\redirect\Debug>redirect >aa.txt ABCDE C:\CCC\redirect\Debug>_ (「_」は点滅してるカーソル) って感じになってる筈です。 9. キーボードから「t」「y」「p」「e」「 (スペース)」「a」「a」「.」「t」「x」「t」「Enter」って打って下さい。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect\Debug C:\CCC\redirect\Debug>redirect abcde abcde C:\CCC\redirect\Debug>redirect >aa.txt ABCDE C:\CCC\redirect\Debug>type aa.txt ABCDE C:\CCC\redirect>_ (「_」は点滅してるカーソル) って感じになってる筈です。 「typeコマンド」は、typeの後ろに指定したファイルの中身を、画面に表示するコマンドです。 このように「CDコマンドで、実行するプログラムが置いてあるディレクトリに移動してから実行」しないと、リダイレクトしたファイルが「どっか行っちゃう」ので、気を付けましょう。 質問者さんのパソコン、あっちこっちの変なフォルダに「aa.txt」が出来てたりしなければ良いのですが…。

muffler
質問者

お礼

大変大変参考になりましたm(_ _)m CDコマンドによって、ディレクトリの移動してから、実行していかなければならないという事なんですね♪ Debugフォルダに、txtも作成でき、閲覧もできました。 1から10まで細かく教えていただき、本当にありがとうございました。

その他の回答 (5)

回答No.5

>ソースファイル「rdtst.c」は、「C:\CCC\redirect」の中にあります。 >コマンドプロンプトを使用して、「C:\CCC\redirect>rdtst」と入力しても、「'c:\CCC\redirect' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と表示され実行できません。 ちょっと笑ってしまいました。 参考書に C:\cwork>rdtst enter ////通常の実行//// abcde enter /////キーボードからの入力//// abcde ////画面出力///// と書いてあるのは 1. DOSプロンプトで「C:\cwork>」と表示され、その後ろにカーソルがある。 つまり C:\cwork>_ ←「_」が点滅してるカーソル って表示になっている。 2. キーボードから「rdtst」と打ち込む。 この時点で C:\cwork>rdtst_ ←「_」が点滅してるカーソル になる。 3. キーボードの「Enterキー」を押す。 この時点で C:\cwork>rdtst _ ←「_」が点滅してるカーソル になる。 4. キーボードから「abcde」と打ち込む。 この時点で C:\cwork>rdtst abcde_ ←「_」が点滅してるカーソル になる。 5. キーボードの「Enterキー」を押す。 この時点で C:\cwork>rdtst abcde abcde C:\cwork>_ ←「_」が点滅してるカーソル になる。 と、言う事です。 けっして、キーボードから「C:\cwork>rdtst」と打て、と言ってる訳ではありません。 >コマンドプロンプトを使用して、「C:\CCC\redirect>rdtst」と入力しても、「'c:\CCC\redirect' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と表示され実行できません。 ってことは、キーボードから「C」「:」「\」「C」「C」「C」「\」「r」「e」「d」「i」「r」「e」「c」「t」「>」「r」「d」「t」「s」「t」「Enter」って打ってるって事ですよね。 そうじゃありません。 「C:\CCC\redirect>_」(「_」は点滅してるカーソル)って表示が出ている時に、キーボードから「r」「d」「t」「s」「t」「Enter」って打つんです。 もし、DOSプロンプトを開いた時に C:\Documents and Settings\ログオンしているユーザー名>_ (「_」は点滅してるカーソル) って表示になっていたら 「C」「:」「Enter」 「C」「D」「 」(スペース)「C」「:」「\」「C」「C」「C」「\」「r」「e」「d」「i」「r」「e」「c」「t」「Enter」 って打って下さい。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect C:\CCC\redirect>_ (「_」は点滅してるカーソル) って感じになってる筈です。 こうなったのを確認したら、キーボードから「r」「d」「t」「s」「t」「Enter」って打って下さい。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect C:\CCC\redirect>rdtst _ (「_」は点滅してるカーソル) って感じになってる筈です。 そしたら、キーボードから「a」「b」「c」「d」「e」「Enter」って打って下さい。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect C:\CCC\redirect>rdtst abcde abcde C:\CCC\redirect>_ (「_」は点滅してるカーソル) って感じになってる筈です。 次は、さっき「r」「d」「t」「s」「t」「Enter」って打ったのと同様に「r」「d」「t」「s」「t」「 (スペース)」「>」「a」「a」「.」「t」「x」「t」「Enter」って打って下さい。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect C:\CCC\redirect>rdtst abcde abcde C:\CCC\redirect>rdtst >aa.txt _ (「_」は点滅してるカーソル) って感じになってる筈です。 そしたら、キーボードから「A」「B」「C」「D」「E」「Enter」って打って下さい。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect C:\CCC\redirect>rdtst abcde abcde C:\CCC\redirect>rdtst >aa.txt ABCDE C:\CCC\redirect>_ (「_」は点滅してるカーソル) って感じになってる筈です。 最後に、キーボードから「t」「y」「p」「e」「 (スペース)」「a」「a」「.」「t」「x」「t」「Enter」って打って下さい。 画面が C:\Documents and Settings\ログオンしているユーザー名>C: C:\Documents and Settings\ログオンしているユーザー名>CD C:\CCC\redirect C:\CCC\redirect>rdtst abcde abcde C:\CCC\redirect>rdtst >aa.txt ABCDE C:\CCC\redirect>type aa.txt ABCDE C:\CCC\redirect>_ (「_」は点滅してるカーソル) って感じになってる筈です。 判りましたか? 「DOSプロンプトが勝手に表示しているものまで、真似してキーボードで打ってしまってはいけない」です。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

VisualC++でビルドしたなら実行ファイルはDebugフォルダかReleaseフォルダの中に作成されています。 C:\CCC\redirectフォルダを開いてどちらかのフォルダにrdtst.exeが作成されているのを確認しましょう 確認したらコマンドプロンプトで C:\CCC\redirect\Debug> か C:\CCC\redirect\Release> のどちらかに移動しましょう

muffler
質問者

お礼

Debugの中に「redirect.exe」はあり、「rdsts.exe」はありません。 「C:\CCC\redirect\Debu\redirect」と打てば、gets(ss);とputs(ss);による実行は出来ますが、aa.txtに出力するということは出来ません。 どのようにすればよいでしょうか?

  • arain
  • ベストアンサー率27% (292/1049)
回答No.3

新しい質問を立てるときは、前の質問は閉じて再質問していることを書いてください。 http://okwave.jp/qa4674004.html とりあえずの確認ですが、 >ソースファイル「rdtst.c」は、「C:\CCC\redirect」の中にあります。 >コマンドプロンプトを使用して、「C:\CCC\redirect>rdtst」と入力しても、「'c:\CCC\redirect' は、内部コマンドまたは外部コマンド、 >操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と表示され実行できません。 実行ファイル「redirect.exe」は、フォルダ「C:\CCC\redirect」にありますか? >「C:\CCC\redirect>rdtst」 だと、フォルダ「C:\CCC」に「redirect.exe」が必要なことになりますが。

muffler
質問者

お礼

再質問大変申し訳ありません。 redirect.exeのあるフォルダへ行ったら、コマンドプロンプトで見事実行できました。 本当にありがとうございました。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>「C:\CCC\redirect>rdtst」と入力しても、 なぜそのように入力しようと思ったのでしょうか? 間違っています。 C:\CCC\redirect\rdtst と入力してください。 >以上のプログラムは、参考書に記載されていたものです。 あまり良い参考書じゃないですね。getsは使ってはいけない関数です。

noname#77845
noname#77845
回答No.1

とりあえず、 ×:C:\CCC\redirect>rdtst ○:C:\CCC\redirect\rdtst と入力して実行する。 その結果が正しかったら C:\CCC\redirect\rdtst > aa.txt に挑戦する。 (パスが通っていないファイルを絶対パスで指定する方法を理解しましょう。)

関連するQ&A