У меня есть программа в режиме консоли, работающая в Windows.Программа вызывает getchar()
в цикле unitl или возвращается EOF
или 0
.Я хотел бы ввести одно из следующих значений в качестве тестового вектора при запуске отладчика:
"abc\0
" или "abc\EOF
Я не могу генерировать последовательно либоЯ попробовал предложение в этом вопросе , набрав a b c CTRL-Z ENTER».Это возвращает 97,98,99,26
моей программе, а затем зависает при следующем вызове getchar()
.
Ввод CTRL-D тоже не помогает, getchar
возвращает 4 для контрольного символа, затем символ новой строки, а затем дублирует строку, которую я только что ввел на консоли,Как будто VS использует управляющие символы для редактирования символов.
EDIT:
Вот урезанная версия кода, который я использую.Я вижу идентичное поведение в консоли отладки и в командном окне.
#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]);
}
Как ввести EOF или ASCII 0 в отладке Visual Studio в консоли Windows?