Из моего предыдущего сообщения я узнал, что getchar() завершается только тогда, когда мы нажимаем Enter. Рассмотрим этот код:
#include<stdio.h>
main()
{
getchar();
getchar();
getchar();
getchar();
getchar();
}
Я ожидал, что это будет работать так: я нажимаю клавишу 1, затем нажимаю Enter, затем клавишу 2 и клавишу Enter, затем клавишу 3 и клавишу Enter, затем клавишу 4 и клавишу Enter и, наконец, клавишу 5+Enter, теперь программа должна завершиться. Это не то, что происходит на самом деле. Происходит следующее: я нажимаю клавишу 1, затем нажимаю Enter, затем клавишу 2 и клавишу Enter, затем клавишу 3 и клавишу Enter, программа в конечном итоге завершается!
- Почему не работают последние два getchar()?
Еще одна странная вещь, которую я заметил, заключается в том, что если я делаю: key1,key2,key3,key4+Enter, программа завершается. Например. Если я последовательно нажму q,w,e и r, а затем Enter, программа завершится.
- Почему не все getchar() запрашивают ввод? Означает ли это, что getchar() принимает любой другой ключ в качестве Enter? Но тогда следующий ключ принимается в качестве ввода для следующего getchar()?
Рассмотрим другой код:
#include<stdio.h>
main()
{
int c=getchar();
int d=getchar();
int e=getchar();
printf("2 getchar are remaining\n");
int f=getchar();
int g=getchar();
printf(" c is %d, d is %d, e is %d, f is %d and g is %d",c,d,e,f,g);
}
Я ввожу: ABCDEFG, затем Enter. Строка осталось 2 getchar() должна быть напечатана, как только я нажму C или D. Но она напечатана наконец, это означает, что все getchar() выполняются одновременно - это странно.
- Разве программа не выполняется построчно? т.е. после третьего getchar должна работать функция printf(). Но это работает, наконец, когда все getchar() выполняются.