我想程序C,其中的文字出现在同一个延迟时间一个字母一个简单的“打字机”的效果。 这是我具备的功能:
#include <stdio.h>
#include <unistd.h>
void typestring(const char *str, useconds_t delay)
{
while (*str) {
putchar(*(str++));
usleep(delay);
}
}
问题是实际上没有出现,直到一个文本\n
显示。 我究竟做错了什么?
输出到stdout
进行缓冲。 使用\n
您强制刷新。 如果你想改变这一点,你需要更改终端设置(对于Linux看这里 ),或者使用
void typestring(const char *str, useconds_t delay)
{
while (*str) {
putchar(*(str++));
fflush(stdout);
usleep(delay);
}
}
你的输出流可能已经得到缓冲, '\n'
刷新缓冲区。
尝试fflush(stdout
后putchar()
如
while (*str) {
putchar(*(str++));
fflush(stdout);
usleep(delay);
}
\n
隐含地强制输出装置以冲洗缓冲的输入。 要刷新你应该明确地使用fflush
:
fflush(stdout);
输出流缓冲,这就是为什么文本实际上并不出现,直到一个\ n为显示“\ n”刷新输出流(硬红)做手工,你可以调用这个函数[fflush(标准输出)]相同。
while (*str) {
putchar(*(str++));
fflush(stdout);
usleep(delay);
}
或者您可以使用
while (*str) {
printf("%c\n",*(str++));
usleep(delay);
}