龙空技术网

人人学编程 C语言入门 单字符输入、输出(I/O),及缓冲区的概念

Soul客栈 171

前言:

今天姐妹们对“c语言中文件缓冲区是硬盘上一块区域”大约比较注重,你们都想要学习一些“c语言中文件缓冲区是硬盘上一块区域”的相关知识。那么小编在网摘上收集了一些有关“c语言中文件缓冲区是硬盘上一块区域””的相关知识,希望兄弟们能喜欢,兄弟们一起来了解一下吧!

摘要: I/O函数将信息传输至您的程序并从你的程序中传出信息:printf()、scanf() getchar() putchar()就是这样的例子。已经在前面的例子中见过这些函数,现在您将了解到它们的基础概念。同时您还将看到改进程序用户界面的方法。

单字符I/O:getchar()和putchar()

getchar()和putchar()每次输入和输出一个字符。

程序示例 echo.c程序

/*echo.c--重复输入*/#include <stdio.h>int main(void){ char ch ;  while((ch=getchar())!='#')  putchar(ch);  return 0;}

ANSI C 将stdio.h头文件与使用getchar()和putchar()相关联,这就是我们在程序中将该文件包含在内的原因。

看过此程序后,您可能想知道在回显输入之前为什么必须键入完整的一行。您可能还想知道是否在在更好的方法来终止输入。让我们来学习C程序对键盘输入的处理方式。我们先来研究缓冲和标准输入文件的概念。

缓冲区

当您在一些系统上运行前面的程序时,您所输入的文本立即回显。也就是说,一个可能的运行示例如下所示:

HHeelllloo,,tthheerree..II wwoouulldd[enter]

lliikkee aa#

前面描述的行为是例外的。

在大多数系统上,在您按下回车键之前什么都不会发生,正如在第一个例子中所示。

输入字符的立即回显是非缓冲(unbuffered)或直接(direct)输入的一个实例,它表示您所键入的字符对正在等待的程序立即变为可用。

相反,延迟回显是缓冲(buffered)输入的实例,这种情况下您所键入的字符被收集并存储在一个被称为缓冲区(buffer)的临时存储区域中。按下回车键可使您所键入的字符对程序变为可用。

为什么需要缓冲区?首先,将若干个字符作为一个块传输比逐个发送这些字符耗费时间少。其次,如果您输入有误,就可以使用您的键盘更正功能来修正错误。当最终按下回车键时,您就可以发送正确的输入。

缓冲分为两种:完全缓冲(fully buffered)I/O和行缓冲(line-buffered)I/O。对完全缓冲来说,缓冲区满时被清空(内容被发送至其目的地)。这种类型的缓冲通常出现在文件输入中。缓冲区的大小取决于系统,但512字节和4096字节是常见的值。对行缓冲I/O来说,遇到一个换行字符时将被清空缓冲区。键盘输入是标准的行缓冲,因此按下回车键将清空缓冲区。

不存在调用非缓冲输入的标准ANSI方式。

-->下节预告:如何终止键盘的输入

标签: #c语言中文件缓冲区是硬盘上一块区域