Когда я запускаю этот код, он печатает символ dos 0 (пробел) один раз, помещает пробел и печатает знак dos 1 (смайлик с белыми глазами и ртом). http://prnt.sc/e2w6bkПочему символ ascii дважды печатается с putchar?
int c = 0, b = 1;
printf("%c %c", c, b);
Но когда я запускаю этот код ниже результата печатается дважды. Я либо получаю 2 пробела, либо 2 смайлика. http://prnt.sc/e2w6mt
while(c != -1)
{
c = (getchar() != EOF);
putchar(c);
}
редактировать: Мой код превращает каждый введенный символ в любой ASCII 0 или 1 (я хотел сделать это, чтобы проверить значения с может принимать в этом коде). Если вы хотите взять с персонажа вы даете его, то вы должны использовать
while((c = getchar()) != EOF)
Используя это будет держать \ п как \ п.
Я думал, что getchar просто прочитал один символ и перестал читать. Я думаю, что поток персонажей не останавливается. Можете ли вы дать мне ссылку, где я могу узнать, как эта вещь работает именно так? Я хочу учиться. Сейчас я изучаю язык программирования C. – madkobra
Он читает только один символ, но затем ваш цикл выполняется во второй раз и автоматически читается в следующем символе. [Здесь находится справочная страница] (http://www.cplusplus.com/reference/cstdio/getchar/). Это объясняет, что getchar() читает символ из stdin. Вы вводите stdin как «1 \ n», поэтому в вашем первом цикле через него читается 1, затем в следующем цикле он читает «\ n». Если вы измените EOF на «\ n», это устранит проблему. – odin
мой плохой. я должен использовать визуальную студию и отладчик больше, но я не работаю над одним большим проектом. Я выполняю упражнения в книге и быстро сохраняю их в папке как .c-файлы, и я перехожу к следующему упражнению. поэтому его быстрее сделать это в devC++, но я должен использовать отладчик, когда у меня есть проблема. Спасибо за помощь. – madkobra