Странное поведение с fputs и петлей - PullRequest
2 голосов
/ 22 марта 2010

При выполнении следующего кода я не получаю вывод, но я не могу понять, почему.

# include <stdio.h>

int main()
{
    fputs("hello", stdout);

    while (1);

    return 0;
}

Без цикла while он работает отлично, но как только я добавляю его, я не получаю вывод. Конечно, он должен выводить перед началом цикла? Это только в моей системе? Нужно ли очищать какой-то буфер или что-то еще?

Спасибо заранее.

Ответы [ 4 ]

5 голосов
/ 22 марта 2010

Вы должны сбросить stdout. Это происходит автоматически, когда вы пишете символ новой строки. Измените fputs на:

fputs("hello\n", stdout);

Или:

fputs("hello", stdout);
fflush(stdout);
0 голосов
/ 22 марта 2010

fflush(stdout);

0 голосов
/ 22 марта 2010

Я думаю, что вопрос помог мне найти решение. Промывка требуется с помощью fflush (..)

http://www.thinkage.ca/english/gcos/expl/c/lib/fflush.html

0 голосов
/ 22 марта 2010

С чего бы это? Функции stdio не знают, что происходит снаружи, и, конечно, не будут знать, что идет бесконечный цикл. Буфер будет очищен только тогда, когда он заполнен или явно запрошен.

...