C getchar() и putchar()

Проходя K&R, я пытаюсь разобраться с C. Я хочу написать программу, которая печатает на экране предыдущую строку пользователя, если только символ не был «a».

int main(){

int c;

while((c=getchar())!=EOF){

     if(c!='a')
            putchar(c);
}
return 0;
}

Да, программа не очень. Но это не сработает так, как задумано. Нужно ли мне использовать значение ASCII символа «а», потому что приведенный выше код просто печатает все буквы независимо от того, является он или нет.


person Community    schedule 18.07.2011    source источник
comment
Я только что запустил код, и он работает нормально для меня?   -  person Giltech    schedule 19.07.2011
comment
Таким образом, он не печатает символ a при вводе a?   -  person    schedule 19.07.2011
comment
правильный вывод, который я получаю, - это печатать букву введенной буквы для всех, кроме буквы a, которая была с прямой копией и вставкой вашего кода. Он распечатывает возврат каретки, если вы введете строку букв lalala, он выведет lll, используя цикл while и getchar, он будет продолжать циклически проходить через входной буфер до тех пор, пока он не станет пустым. . Вот почему вы видите возврат каретки   -  person Giltech    schedule 19.07.2011
comment
ах. Я сделал очень глупую ошибку. Это работает нормально. Напишите свой ответ как ответ, и я отмечу его как правильный.   -  person    schedule 19.07.2011
comment
Я думаю, вы путаете терминал, повторяющий ваш ввод, и то, что выводит ваша программа. Попробуйте эхо лалала | ./test › результат, а затем результат cat.   -  person Nemo    schedule 19.07.2011


Ответы (1)


Код должен работать, как указано, но вы обнаружите, что использование getchar с циклом while будет печатать возврат каретки при вводе a. Это связано с тем, что в текущей реализации getchar будет продолжать считывать входной буфер до тех пор, пока он не станет пустым, если вы хотите остановить это, вы можете сбросить его в операторе if.

Ввод строки текста в данный момент напечатает строку, удалив все *a*s

person Giltech    schedule 18.07.2011
comment
Извините, но не. getchar возвращает int; putchar принимает целое число. - person Nemo; 19.07.2011