Как сделать задержку между печатью символов в цикле печати строки? - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь напечатать каждый символ отдельно и между ними есть задержка, поэтому, когда я запускаю цикл, вместо печати каждого символа сразу печатается один символ за раз.

Цель состоит в том, чтобыесть строка, которая будет печататься по одной букве за раз, и это будет выглядеть так, как будто она печатается программой.

Я использовал код для задержки, которую я обнаружил в интернете, она должначтобы сделать задержку между печатью символов.

#include <stdlib.h>    
#include <time.h>    
#include <string.h>    

void delay(unsigned int milliseconds) {    
    clock_t start = clock();    
    while ((clock() - start) * 1000 / CLOCKS_PER_SEC < milliseconds);    
}    

int main() {    
    int c = 0;    
    char s[6] = { 'H', 'e', 'l', 'l', 'o', '\0' };    
    for (c = 0; s[c] != '\0'; c++) {    
        printf("%c", s[c]);    
        delay(1000);    
    }    
    return 0;    
}    

Я ожидал, что он будет печатать каждую букву за раз с секундной задержкой между каждой буквой, но вместо этого он ждет 6 секунд и печатает всевне.

1 Ответ

0 голосов
/ 17 февраля 2019

Вывод из printf и других функций, которые записывают в stdout и другие файлы, могут быть помещены в буфер, поэтому они могут отображаться для печати только при очистке буфера.

Вы можете добавить строку fflush(stdout) внутри вашего цикла, чтобы принудительно сбросить буфер в поток, гарантируя, что любые ожидающие выходные данные в буфере будут записаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...