为什么我的字符数组不会立即打印,除非我使用'\ n'?

时间:2017-06-19 21:11:53

标签: c arrays

我正在尝试打印出一个字符数组(在这里仔细选择我的单词),好像它是由某人键入控制台一样。出于某种原因,printf不会立即将字符打印到控制台。按原样,程序将没有任何内容打印到控制台,以确保打印整个字符数组所花费的时间。但是,当我取消注释行//printf("\n");时,控制台实际上会显示内容为“已键入”,尽管是垂直的。换句话说,使用换行符似乎迫使控制台立即打印角色。

为什么会这样,以及解决这个问题的理想方法是什么?我问,因为我一般都在考虑:如果我正在为图形视频游戏编写文本引擎怎么办?

#include <stdio.h>
#include <unistd.h>

void milliDelay(unsigned int milliseconds)
{
    usleep(milliseconds * 1000);
}

void printConsole(char* txt)
{
    //Define local variables such as the iterator and timers
    unsigned int i;
    unsigned const int keyDelay = 75, puncDelay = 1000;

    //Print each character to the screen until we reach the null character
    for(i = 0; txt[i] != '\0'; i++)
    {
        if(txt[i] == '.' || txt[i] == '!' || txt[i] == '?')
        {
            printf("%c", txt[i]);
            milliDelay(puncDelay);
        }
        else 
        {
            printf("%c", txt[i]);
            milliDelay(keyDelay);
        }
        //printf("\n");
    }
    //Newline for much more appealing text formatting
    printf("\n");
}

int main(int argc, char** argv) {
    printConsole("Hello. This is a test using punctuation! Does this pause correctly?");
    return 0;
}

对于它的价值,我使用的是Ubuntu系统。我无法看到代码是否在其他平台上按预期工作。我也研究过这个问题。我已将代码编写为 I 的想法。其他人使用putchar(),但这是我在C编程课中从未见过的东西 - 因此我不在此处使用它。在这种情况下使用printf()优于putchar()有什么不好吗?

0 个答案:

没有答案