こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

リダイレクト指示について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' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と表示され実行できません。

リダイレクト指示を実行させるには、どのようにしたらよろしいでしょうか?
教えていただければ嬉しいです。

投稿日時 - 2009-01-31 12:07:51

QNo.4676645

すぐに回答ほしいです

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

>「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」が出来てたりしなければ良いのですが…。

投稿日時 - 2009-01-31 15:37:16

お礼

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

投稿日時 - 2009-01-31 20:29:46

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.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プロンプトが勝手に表示しているものまで、真似してキーボードで打ってしまってはいけない」です。

投稿日時 - 2009-01-31 15:13:32

ANo.4

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

C:\CCC\redirect\Release>
のどちらかに移動しましょう

投稿日時 - 2009-01-31 12:24:32

お礼

Debugの中に「redirect.exe」はあり、「rdsts.exe」はありません。

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

投稿日時 - 2009-01-31 13:02:40

ANo.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」が必要なことになりますが。

投稿日時 - 2009-01-31 12:18:34

お礼

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

投稿日時 - 2009-01-31 12:48:13

ANo.2

>「C:\CCC\redirect>rdtst」と入力しても、

なぜそのように入力しようと思ったのでしょうか?
間違っています。
C:\CCC\redirect\rdtst
と入力してください。

>以上のプログラムは、参考書に記載されていたものです。

あまり良い参考書じゃないですね。getsは使ってはいけない関数です。

投稿日時 - 2009-01-31 12:15:33

ANo.1

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

投稿日時 - 2009-01-31 12:14:28

あなたにオススメの質問