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

时间:2011-10-25 14:53:58

标签: c

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

假设我有字符串:

char *str = "stackoverflow";

我想在每个字符之后一次打印该字符串一个字符:

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

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

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

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

谢谢!

3 个答案:

答案 0 :(得分:5)

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

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

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

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

setbuf(stdout, NULL);

答案 1 :(得分:0)

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

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

fflush(stdout);

答案 2 :(得分:0)

您需要致电fflush()。角色正在缓冲。