最简单的输入输出操作是从“标准输入单元”中读取一个字符,或往“标准输出单元”写一个字符。读取某个字符可以用函数getchar来完成。getchar的形式为:
variable_name=getchar();
variable_name是已声明为char类型的有效C变量名。当遇到该语句时,计算机等待从键盘输入一个字符,并将该字符作为一个数值赋给getchar函数。由于getchar用在赋值语句的右边,因而getchar的字符值被赋给了左边的变量名。例如:
char name;
name=getchar();
当我们在键盘上按下H键时,就把字符‘H’赋给了变量name。由于getchar是一个函数,因而它需要有括号。
图中的程序显示了在交互环境中getchar函数的使用情况。
#include<stdio.h>
main()
{
charanswer;
printf("Wouldyou like to know my name?n");
printf("TypeY for YES and N for NO:");
answer=getchar();
if(answer=='Y'||answer=='y')
printf("nnMyname is BUSY BEEn");
else
printf("nnYouare for nothingn");
}
该程序为用户显示一个YES/NO类型的问句,并读取用户的单个字符响应。如果响应为Y,那么其输出为如下消息:
My name is BUSY BEE
否则,输出为:
You are good for nothing
注意,在输入文本与输出消息之间有一空行。
getchar函数可以用来连续一行文本中的字符。例如,下面的程序段就可以从键盘中一个接一个地读取字符,直到按下回车键为止。
......
char character;
character ='';
while (character!='n')
{
character=getchar();
}
......
警告
getchar()函数恩能够接受键入的任意字符,包括回车键和制表符。这意味着当我们键入单个字符时,在getchar()函数返回后,新行字符在输入队列中等待,这在交互循环中使用getchar()函数时会产生问题。getchar()函数可用来消除不想要的新行字符。我们也可以用flash()函数来冲刷掉不想要的字符。
写字符
与getchar函数一样,也有一个类似的putchar函数,用于每次往终端写字符。其形式如下:
putchat (variable_name);
其中variable_name是一个char类型的变量,包括一个字符。该语句在终端显示包含在variable_name变量中的字符。例如,语句:
answer='Y';
putchar (answer);
将字符Y显示在屏幕上。语句:
putchar(‘n’);
是屏幕上的光标移到下一行的开始处。
程序从键盘读取一个字符,并进行大小写转换后再显示出来,也就说,如果输入的是大写字母,那么输出的就是小写字母。反过来也是如此。
该程序使用了三个新的函数islower、toupper和tolower。islower是一个条件函数,如果参数为小写字母,那么该函数为TRUE,否则为FALSE。函数toupper把参数的小写字母转换为大写字母,而tolower函数正好相反。
#include<stdio.h>
#include<ctype.h>
main()
{
charalphabet;
printf("Enteran alphabet");
putchar('n');
alphabet=getchar();
if(islower(alphabet))
putchar(toupper(alphabet));
else
putchar(tolower(alphabet));
}
输出
Enter an alphabet
a
A
Enter an alphabet
Q
q
Enter an alphabet
z
Z