成都网站建设设计

将想法与焦点和您一起共享

C语言第11天,输入输出缓存和函数

一、输出缓存

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比铜鼓网站开发、企业建站全套包干低至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才可以被使用。

二、函数

可以把函数看做一个盒子,这个盒子有如下几个特性:
网站名称:C语言第11天,输入输出缓存和函数
当前链接:http://chengdu.cdxwcx.cn/article/dsoiepp.html