Посмотрите на приведенный ниже код, который вы упомянули
int main(void){
int c;
c = getchar();
while (c != EOF) {
putchar(c);
}
return 0;
}
Когда c = getchar();
выполняется и если вы предоставили ввод как ABC
в время выполнения и нажмите ENTER(\n)
, в это время c
содержит первый символ A
.Затем перейдите к циклу, ваше состояние c!=EOF
, то есть A!=EOF
, которое всегда истинно, и оно будет печатать A
бесконечно, потому что вы не запрашиваете ввод второй раз, поэтому c
держит A
.
правильная версия приведенного выше кода:
int main(void){
int c;
while ( (c = getchar())!=EOF) { /* to stop press ctrl+d */
putchar(c);
}
return 0;
}
case 2: - Теперь рассмотрим второй код
int main(void){
int c;
c = getchar();
while (c != EOF) { /*condition is true */
putchar(c);
c = getchar ();/*After printing ABC, it will wait for second input like DEF, unlike case-1 */
}
return 0;
}
Может кто-нибудьпожалуйста, объясните, почему он не показывает только один A в качестве вывода? Почему он должен печатать только A
, он печатает любой введенный вами ввод, такой как ABC
и так далее.Просто обратите внимание, что getchar()
работает с буферизованным вводом, то есть когда вы нажимаете ENTER
getchar()
, вы будете читать до этого, а когда читать нечего getchar()
возвращает EOF
.