在char之后用char打印字符串char

我有一个有点愚蠢的问题,因为它应该是完全简单的……

假设我有字符串:

char *str = "stackoverflow"; 

我希望一次打印一个字符,每个字符后有一些延迟:

 int i = 0; while (str[i] != '\0') { putchar(str[i]); usleep(100000); i++; } 

但是,不是做明显和正确的事情,打印一个字符并等待100毫秒再做一遍,看起来延迟累积并立即吐出。
所以它快乐地睡了大约一秒半,然后打印出我的弦。

有任何想法吗?
(我在Ruby中做了完全相同的事情没有问题,也尝试使用’\ r’方法,它也适用于Ruby …)

请帮忙!
否则我不能为我的作业执行程序,即打印字符串 ; 但我不想这么做……;)

谢谢!

尝试在两者之间刷新缓冲区:

 putchar(str[i]); fflush(stdout); usleep(100000); 

写入终端时,输出通常是行缓冲的。 如果遇到\n或缓冲区填满,则会打印实际内容。

或者,你可以在开始时一劳永逸地禁用缓冲:

 setbuf(stdout, NULL); 

这不是延迟累积并立即吐出,而是字符串(请注意,当您执行程序时,延迟出现在字符串打印之前,而不是之后)。

在每个char后刷新标准输出:

 fflush(stdout); 

你需要调用fflush() 。 角色正在缓冲。