У меня есть базовый код, который я пытаюсь запустить в терминале для класса. У меня возникли проблемы с окончанием кода командой ctrl + d, когда я закончил печатать. Код ищет количество определенных символов, «e», гласный, а также общее количество используемых символов. Часами вчера я смог использовать команду Ctrl + D для завершения моей программы и продолжать редактировать/добавлять к ней, но он внезапно прекратил работать.CTRL + D внезапно перестает работать в Mac OS X Terminal, не выполняет операцию EOL
Я заметил, что когда строка ввода «d» вводится в окно, возвращается клавиша возврата, а затем используется ctrl + d, программа успешно отображает данные, но в противном случае любой другой вход не кажется, дают команду EOF, которую я ищу.
Я попытался сбросить свой терминал, сохранил условие, в котором работает строка «d», и попытался снова. Что происходит? Прочитав подробно по теме, я думаю, это может быть связано с чем-то еще, работающим в фоновом режиме?
int main() {
char ch;
int ecount=0, vowels=0, other=0;
cin.get(ch);
while(!cin.eof()) {
switch(ch) {
case 'e':
ecount++;
case 'a';
case 'i':
case 'o':
case 'u':
vowels++;
break;
default:
other++;
}
cin.get(ch);
}
cout << ecount << " "<< vowels << " " << other << endl;
}
Если вы не нажмете сначала, сначала дважды нажмите Ctrl + D. –
@thatotherguy Я тоже это заметил - это стандартное поведение? Вы знаете, что вызывает это? –
Да, это ожидается. Ctrl-D просто делает любой ожидающий вызов чтения на возврат терминала с любыми буферизованными данными, подобными возврату (кроме этого вы также получаете '\ n'). Если вы нажмете Ctrl-D после Return или Ctrl-D, вызов чтения вернется с 0 байтами, что по соглашению означает конец ввода. –