如何用C实现文字一个一个打印在屏幕上
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <signal.h>
4 #include <unistd.h>
5
6 int main(void)
7 {
8 char p[] = "把文字一个一个打印在屏幕上";
9 char * q;
10 q = p;
11 while( *q )
12 {
13 printf("%c",*q++);
14 fflush(stdout);
15 usleep(100000);
16 }
17 printf("\n");
18
19 return 0;
20 }
fflush函数解释参考的以下博客:
原文链接:https://blog.csdn.net/aa804738534/article/details/100764343
头文件:#include<stdio.h>
定义函数:int fflush(FILE * stream);
函数说明:fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中,如果参数stream为NULL,fflush()会将所有打开的文件数据更新。
返回值:成功返回0,失败返回EOF,错误代码存于errno中。
fflush()也可用于标准输入(stdin)和标准输出(stdout),用来清空标准输入输出缓冲区。
stdin是standard input的缩写,即标准输入,一般是指键盘;标准输入缓冲区即是用来暂存从键盘输入的内容的缓冲区。
stdout是standard output 的缩写,即标准输出,一般是指显示器;标准输出缓冲区即是用来暂存将要显示的内容的缓冲区。
清空标准输出缓冲区,刷新输出缓冲区,即将缓冲区的东西输出到屏幕上
如果圆括号里是已写打开的文件的指针,则将输出缓冲区的内容写入该指针指向的文件,否则清除输出缓冲区。
这里的stdout是系统定义的标准输出文件指针,默认情况下指屏幕,那就是把缓冲区的内容写到屏幕上。
可是从代码中看不出缓冲区会有什么内容,所以它实际上没有起什么作用
顺便说说sleep和usleep的区别
头文件: #include <unistd.h>
定义函数: void usleep(int micro_seconds);
参数说明:参数 micro_seconds 为要暂停的微秒数(us)
函数说明:把线程挂起一段时间, 单位是微秒(千分之一毫秒)。本函数可暂时使程序停止执行。
返回值:无
这个函数不能工作在windows操作系统中。用在Linux的测试环境下面。
头文件: #include <unistd.h>
函数定义:unsigned sleep(unsigned seconds);
函数说明:执行挂起指定的秒数
返回值:若成功,返回 0,否则返回 false。
出错:如果指定的描述 seconds 是负数,该函数将生成一个 E_WARNING。
用于延迟挂起进程。进程被挂起放到ready queue。
一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。
如果延迟时间为几十毫秒(1ms = 1000us),或者更小,尽可能使用usleep()函数。这样才能最佳的利用CPU时间