Как бесконечный l oop дальше останавливает выполнение более раннего кода? - PullRequest
1 голос
/ 14 марта 2020

Я столкнулся с этой странной ситуацией, я не могу обернуться. В следующем коде Программа явно вводит бесконечный l oop, но не выполняет код, предшествующий ей.

#include <stdio.h>
#include <stdlib.h>

int main() {
    char buf[100];

    if (scanf("%s", buf)==EOF)  return 0;

    printf("This does not get printed");

    while(1) {} //infinite loop
    return 1;
}

Каким-то образом команда printf не выполняется даже после нажимая enter или используя Ctrl-d. Тем не менее, кажется, что код окажется в бесконечном l oop.

Кто-нибудь объясняет, что здесь происходит? Я использую г cc.

1 Ответ

3 голосов
/ 14 марта 2020

Стандартный вывод - это буферизованная строка по умолчанию Если вы записываете менее одной строки в вывод, некоторые или все из них могут быть отложены до тех пор, пока не произойдет больше вывода.

...