標準入力ストリームにファイルを指定した時のデバッグ

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

標準入力ストリームにファイルを指定した時のデバッグ

#1

投稿記事 by kazuoni » 16年前

お邪魔します。

いつもながらかなり初歩的な質問なんですが・・・
タイトルの通り、
標準入力ストリームにファイルを指定した時のデバッグについてなのですが、
なぜデバッグなしで実行で正常に動き、
デバッグで実行すると正常に動かないのですか?

環境はvista,
visual c++ 2008です。

[プロジェクト]→[(プロジェクト名)のプロジェクト]→[デバッグ]
のコマンド引数のところに
< a.txt > b.txt
と指定し、以下のコードをビルドします。
#include<stdio.h>
int main()
{
        printf("テスト\n");
	int c=getchar();
	char i[2];
	i[0]=c;
	i[1]='\0';
	printf("%s",i);
	return 0;
}
a.txtの中はabcとだけ書いてあります。b.txtは中身なしです
この状況で
[デバッグ開始]をするとgetcharを呼び出したら何も返ってきません。
printf("テスト")が実行画面に出ているので、
うまく指定できてないと分かりました。
そこで、[デバッグなしで開始]を実行するとうまくいきます。

これはなぜでしょうか?
ブレイクポイントを立てたかったのですが、立てれません。。
何か良い解決方法はあるのでしょうか?

よろしくお願いします。

23:52修正

Justy

Re:標準入力ストリームにファイルを指定した時のデバッグ

#2

投稿記事 by Justy » 16年前


>これはなぜでしょうか?

 バグじゃないですかね、デバッガの。

Can't redirect stdin/stdout for debugging
ttp://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=333493

 でも、SP1で直っているようです。

List of changes and fixed issues in Visual Studio 2008 Service Pack 1 for Express Editions
ttp://support.microsoft.com/?scid=kb%3Ben-us%3B950264&x=9&y=9


 ちなみにデバッガのタイプを混合にすると
< a.txt くらいはうまくいったりするようです。

kazuoni

Re:標準入力ストリームにファイルを指定した時のデバッグ

#3

投稿記事 by kazuoni » 16年前

やっと再インストール終わりました。
Justyさんのおっしゃる通りバグだったようです。。
再インストールしたらきっちり動きました。
SP1のversionが古かったのでしょうか^^;
よく分かりませんが、無事解決しました!

ご回答いただきありがとうございました。
またよろしくお願いします。

閉鎖

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