Windows でコンソール モード プログラムを実行しています。プログラムはgetchar()
ループ単位で anEOF
または a のいずれかを呼び出します0
。デバッガーの実行中に、次のいずれかをテスト ベクターとして入力したいと思います。
" abc\0
" または "abc\EOF
どちらも一貫して生成できないようです。「」と入力して、この質問の提案を試しましたa bcCTRL-ZENTER。これにより、プログラムに戻り、次の呼び出し 97,98,99,26
でハングします。getchar()
入力CTRL-Dしても hlep は実行されずgetchar
、制御文字に対して 4 が返され、次に改行文字が返され、コンソールに入力したばかりの行が複製されます。VSが制御文字を編集文字として使用しているようです。
編集:
これは、私が使用しているコードの簡略化されたバージョンです。デバッグ コンソールとコマンド ウィンドウで同じ動作が見られます。
#define MAXSZ 4096
int main(int argc, char **argv)
{
short int data[MAXSZ]={0}, i=0;
char c;
do {
if (i==MAXSZ) break;
c = getchar();
if (c!=EOF) data[i]=c;
} while (data[i++]!=0);
for (i=0;data[i]&&i<MAXSZ;i++)
putchar(data[i]);
}
Windows コンソールをデバッグする Visual Studioで EOF または ASCII 0 を入力するにはどうすればよいですか?