十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
一、输出缓存
成都创新互联公司-专业网站定制、快速模板网站建设、高性价比铜鼓网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式铜鼓网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖铜鼓地区。费用合理售后完善,10年实体公司更值得信赖。
例题:输出"HelloWorld"十次,每次输出后暂停500毫秒。
#include
#include
int main()
{
for (int i = 0; i <= 10; i++)
{
printf("helloworld%d ",i);
Sleep(500);
}
return 0;
}
在windows系统上,我们使用windows.h头文件中提供的Sleep函数,每次输出后休眠500毫秒。
//linux系统
#include
#include
int main()
{for(int i=0;i<10;i++)
{printf("HelloWorld%d",i);
usleep(1000*500);//使用usleep函数休眠500毫秒}
return 0;}
而在linux系统上,休眠5000毫秒,打印出所有HelloWorld
这是因为在windows系统下,使用printf后,数据被写入到输出缓存区。随后,立即刷新缓存区。
在linux系统下,使用printf后,数据被写入到输出缓存区。后续的printf会在缓存区积累数据,直到程序结束才刷新缓存区。
行缓存:一行结束后必须刷新缓存;
完全缓存:等到缓存区被填满,才刷新缓存。
所以只要Linux系统printf的%d后面加上\n就会实现目标
阻塞
#include
int main()
{
char c1,c2;
c1=getchar();
putchar(c1);
getchar();//用于吸收'\n',不然\n会被c2吸收,从而c2将不会在输入
c2=getchar();
putchar(c2);
return 0;
}
程序运行到第一个getchar,由于输入缓存区没有数据,getchar进入阻塞状态,等待用户输入。在输入'A'并按回车后,"A\n"进入了输入缓存区。
第一个getchar获取了字符'A',解除阻塞状态,继续执行。接着用putchar打印c1。
执行到第二个getchar时,由于输入缓存区仍有字符'\n',第二个getchar将不进入阻塞状态,直接读取缓存区中的'\n',并继续执行。
2.不带缓存的输入函数
getch函数
#include
#include
int main()
{
while (1)
{
char c;
c=_getch();//输入后,使用putchar打印在控制台上,_为vs的一种要求
putchar(c);
if(c=='q')
break;
}
return 0;
}
输入"q",程序立刻显示"q"并退出。
getche函数
与getch函数类似,不过它会自己将输入的字符打印在控制台上。getche函数相当于无缓存有回显的getchar。
#include
#include
int main()
{
while (1)
{
char c;
c=_getche();//输入后,使用putchar打印在控制台上
if(c=='q')
break;
}
return 0;
}
输出结果与getch相同
请注意这两个函数需要包含头文件conio.h才可以被使用。
二、函数
可以把函数看做一个盒子,这个盒子有如下几个特性: