печать секунд одна за другой с функцией sleep () - PullRequest
0 голосов
/ 07 апреля 2011
for(j = 1; j < 11; j++)
        {
            printf("%ds ",j);
            sleep(1);
        }

Я ожидал, что этот код напечатает «1 с 2 с 3 с ... 10 с», где между ними есть интервал в 1 секунду, но вместо этого он напечатает все числа через 10 секунд.как мне это исправить?Я работаю над Ubuntu.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Поток stdout буферизуется, поэтому, если вы хотите немедленно получить результаты, вам нужно очистить этот буфер с помощью fflush():

for (j = 1; j < 11; j++) {
    printf("%ds ", j);
    fflush(stdout);
    sleep(1);
}
0 голосов
/ 07 апреля 2011

добавьте \ n к вашему printf для сброса.

for(j = 1; j < 11; j++)
        {
            printf("%ds\n",j);
            sleep(1);
        }

Для получения дополнительной информации см. здесь .

...