我被要求编写一个程序来闪烁给定的单词而不使用c中的clrscr
函数,并且当我在printf中添加\n
时,我正在尝试下面的代码,然后它只能正常工作,当我删除了\n
,但它什么也没显示?
#include <stdio.h>
#include <unistd.h>
int main()
{
int j=10;
while (j--)
{
printf("BLINK");
sleep(1);
system ("clear");
sleep(1);
}
return 0;
}
答案 0 :(得分:3)
缓冲 。
默认情况下,行缓冲是输出到stdout
(printf
写入的地方)。这意味着写入stdout
的文本仅放入缓冲区中,除非缓冲区已满或写入了换行符,否则它们不会被刷新(实际上已写入设备)。 / p>
有关此方面的信息,请阅读任何好书,教程或上课。
答案 1 :(得分:1)
您可以通过添加标准输出来解决问题。
#include <stdio.h>
#include <unistd.h>
int main()
{
int j=10;
while (j--)
{
printf("BLINK");
fflush(stdout);
sleep(1);
system ("clear");
sleep(1);
}
return 0;
}
但是system(“ clear”)可能会使代码审阅者哭泣,所以也许考虑使用诸如退格转义序列之类的东西。
#include <stdio.h>
#include <unistd.h>
int main()
{
int j=10;
while (j--)
{
printf("BLINK");
fflush(stdout);
sleep(1);
printf("\b\b\b\b\b \b\b\b\b\b");
fflush(stdout);
sleep(1);
}
return 0;
}