c语言i o分类 使用原则,C语言第11章I/O及有关库函数.doc

C语言第11章I/O及有关库函数

第十一章 I/O及有关库函数

对于一个实际的计算机程序,少不了频繁地与用户交互,所以输入和输出(Input/Output)操作在程序中常常占有很大的比例。

由于输入输出操作需要和具体的输入输出设备打交道,所以很多程序设计语言的输入输出(I/O)指令的实现往往直接依赖于具体计算机的硬件设备(键盘、显示器等)特性。这使得相应的程序设计语言具有“设备相关性”,即一旦设备发生变化,则语言的实现也要相应的变化。

一个好的程序设计语言应该具有“设备无关性”,即设备的变化并不会影响语言的实现。为了实现设备无关性,标准C将诸如输入输出等与具体硬件设备相关的指令都排除在其指令集之外。相应地,每个C编译程序都伴随有一个标准函数库,其中就包括一些与I/O有关的函数。

这样,通过把语言中依赖于机器的部分交由库函数来完成,从而使得C语言的实现与具体的设备无关。这样便能比较容易地把C语言及C程序移植到其他计算机系统上。

如果在C程序中调用一个函数,而在该程序中没有这个函数所对应的程序段,则C编译程序就要到C的标准函数库中去寻找这一函数,如果找到了,该函数所对应的代码段就会加入到该程序中去。从技术上讲,这一工作是由连接程序来做的。显然,标准函数库中的函数越多,我们在程序设计中所必须编写的函数就越少。

此外,大多数C编译系统还提供了一种功能,使程序员能按自己的要求把自己编写的函数加入到标准函数库中。这样,随着标准函数库的不断扩充,用C语言来编程序就会变得越来越容易,代码的复用率也越来越高。

C库函数的种类繁多,功能各异,本章仅对常用的I/O函数做一个介绍。至于其它库函数的功能和引用方式,请参看有关的库函数手册。

§11.1 控制台I/O

所谓“控制台I/O”是指针对“标准输入设备”和“标准输出设备”的I/O操作。对大多数计算机系统而言。标准输入设备通常对应键盘(Keyboard),而标准输出设备通常对应显示器(Monitor)。在引用C的控制台I/O库函数时,需要事先用宏命令 #include 将标准输入输出(Standard Input & Output)头文件“stdio.h”包含进来,即在程序头部加进宏命令:

#include

这是因为在头文件stdio.h中包含了与标准I/O库函数有关的变量定义和宏定义。下面我们就对常用的C控制台I/O库函数作一介绍:

11.1.1 getchar和putchar (单字符输入输出)

getchar和putchar实际是在头文件stdio.h中定义的宏,它们的定义如下:

#define getchar() getc(stdin)

#define putchar(c) putc((c),stdout)

至于函数getc和putc 以及stdin和stdout的含义会在本章的后面加以介绍,大家现在只需记住getchar和putchar的引用方式及完成的功能即可。虽然getchar和putchar不是真正的函数,但为了便于理解,这里仍用函数说明的方式来给出它们的描述。

getchar的说明形式如下:

int getchar()

功能:

getchar从标准输入设备的“输入字符流”中读入下一个字符。

返回值:

getchar将所读入的字符转换为int型并返回。

putchar的说明形式如下:

int putchar(int c)

功能:

putchar向标准输出设备的“输出字符流”中输出经由实参传过来的字符c。

返回值:

putchar返回字符c。

[例11.1] 从标准输入设备读入一行字符,再将其输出。

#include

void main()

{ int c;

/* getchar从标准输入设备读入字符,且其是“行缓冲”的,

这就意味着getchar在读入换行符’\n’之前不会返回 */

while((c=getchar()) != ’\n’) putchar(c);

}char *gets(char *s)

功能:

gets从标准输入设备读入一串字符到字符串变量s中,直到遇到换行符’\n’为止。

返回值:

gets返回s。

puts的说明形式如下:

int puts(char *s)

功能:

puts向标准输出设备输出字符串s然后再跟着输出一个换行符’\n’。

返回值:

puts返回一个非负的整数。

[例11.2] 从标准输入设备上读进若干字符行,直到遇见空行为止。然后输出最长的行。假设一行不能超过80个字符。

#include

#include

#define N 81

void main()

{ char longest[N],s[N];

int maxlen=0,len;

puts("Input some lines:")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值