慢慢出现printf,在C99

Slowly Appears printf, in C99

我想制作一个类似于 printf 的函数,但它使文本显示缓慢,通过使用双 for,一个用于打印 char,一个用于花费时间:

    char phrase[30]={"Printf random"};
    for(int a=0;a<=30;a++){
        printf("%c",phrase[a]);
        for(int t=0;t<=1000000;t++){
            int f;
            f++;
        }
    }

但是当我运行,一开始,它需要几秒钟(第二个for),然后打印所有的短语。

为什么每次进第一个都不进第二个? 也许一旦程序第一次计算了秒,再次计算它就不需要时间了?我该如何解决?

首先,在你的代码中,通过说

 for(int a=0;a<=30;a++){    

你差了一个,它调用了 undefined behavior。应该是

 for(int a=0;a<30;a++){

也就是说,您需要刷新输出缓冲区才能将缓冲区内容实际发送到相关文件。否则,标准输出实际上是行缓冲的,它不会自动刷新内容。所有的内容都会存储在缓冲区中,当程序快要结束时,所有打开的缓冲区都会被刷新,然后所有的内容就会一起出现。

int f 应该在第二个 for 循环之前。您每次在循环中创建一个新变量 f 并递增新变量。

在你的例子中,它起作用是因为循环中没有其他变量。因此,每次在循环中,变量 f 将在相同的内存位置创建,并具有旧值。

如果您有一个包含多个 if 条件的复杂循环,这可能不起作用。

此外,正如其他人提到的,您需要刷新输出。