нас попросили сделать небольшую программу, которая будет печатать каждый символ из stdin с помощью getchar() ... Я думал, что следующий код будет работать, но когда я запустил его в консоли Windows ничего происходит, курсор зависает на неопределенное время, как будто он ждет ввода ...печать stdin char на char до конца файла
int c = 0;
while(c != EOF)
{
c = getchar();
printf("%c\n", c);
}
printf("\nOut of loop!\n");
я думал, что код будет печатать поток полукокса на гольца, и если бы не было ничего стандартного ввода, GetChar() возвращает EOF и тому цикл остановится .. я думаю, что я неправильно понимаю, как ввод делается на C, для новичка это действительно запутывает ... Любая помощь!
Другого запутанным пример:
char str[100]={0};
printf("Entrer a string: ");
scanf("%s",str); //i'll enter a string with spaces to have something to print in the loop
//let's say i enter Hello Wor^Zld!
int c = 0;
while(c!=EOF)
{
c = getchar();
printf("%c",c);
}
printf("Finally done with loop!!\n");
, когда я запускаю приведенный выше код я получаю следующее отображение в консоли:
Wor->
с тем же старым курсором висит, ожидая ввода ... Любая идея, почему? кажется, что Ctrl-Z + Enter «^ Z-Enter» остановил отображение, но цикл продолжается? я честно делаю все возможное, чтобы понять, но я должен быть честным, что это сбивает с толку. Заранее благодарю за помощь и поддержку!
Да, это * ждем ввода из 'stdin' (обычно это клавиатура), если вы не перенаправляете входные данные из мультии. Функция не вернет 'EOF', пока вы не наберете« Ctrl-D Enter »(Linux) или« Ctrl-Z Enter »(Windows). –
minor note: 'while (c! = EOF) { c = getchar();' -> 'while ((c = getchar())! = EOF) {' – BLUEPIXY
@BLUEPIX да, это одно и то же, но как новичок, я бы не стал помещать все в цикл: P – user7427260