《C语言教程》03章 字符的输入输出


前2章用到的printf()函数,是C语言中的带格式的标准输出函数。C语言的函数都封装在不同的函数库里面,编程时要用到某个函数时, 只要用include语句申明一下,被申明过的函数库中的所有函数就可以在程序的任何地方使用。这2章要讲述的基本输入输出函数,都 在stdio.h中被定义。

一、字符的输入输出『getchar(),putchar()』

函数getch()是从终端输入一个字符。注意:是一个字符,也就是说,该函数调用一次只能得到一个字符,想要得到若干字符,只能调用若干次。

函数putchar()是向终端输出一个字符。注意:这儿也是一个字符,也就是说,该函数调用一次只能输出一个字符,要输出若干字符,只能调用若干次。


#include <stdio.h>

int main(void)
{
    char ich1;
    int  ich2,ich3;

    char ch1 = 'q';
    char ch2 = 'u';
    char ch3 = 'a';
    char ch4 = 'n';


    ich1 = getchar();    //字符类型实际是整型,只是范围小点而已
    ich2 = getchar();    //所以字符赋给整数变量没有关系
    ich3 = getchar();    //这三句在屏幕上输入“xue”后回车

    putchar(ch1);
    putchar(ch2);
    putchar(ch3);
    putchar(ch4);
    putchar(ich1);
    putchar(ich2);
    putchar(ich3);
    putchar('\n');       //这是回车字符

    return 0;
}  

上例中调用了3次getchar()函数,输入时请注意:

  1. 如果正好输入3个字符后回车,则3个字符分别赋给了相应的三个变量。
  2. 如果输入的字符数大干3个,则多余的被会扔掉。
  3. 如果输入2个字符后回车,则回车符被赋给了第3个变量。
  4. 如果输入1个字符后回车,则第1个变量得到了这个字符,而第 2个变量则得到的是回车,第3个变量还没有得到,所以系统还在继续等待你输入第3个字符。
  5. 如果不输入而直接敲回车,则你必须敲3次回车,3个变量全等于回车。
  6. getchar()的返回值不是char,而是int。因此当得到超出char范围的数据时要注意。

二、改进后的字符输入函数

上面这些令人不满的地方,主要是由于getchar()函数使用了键盘缓冲区,一直等到有回车时,getchar()函数才接受字符。因此有人对此函数进行了扩充, 函数名为getche(),不再使用键盘缓冲,输入的字符立即就能被接受。这个函数不是存放在stdio.h中,而是存放在conio.h中。上面程序如下修改便好用多了。类似函数还有很多,如getch(),这和getche()的区别是,getch()函数在输入后并不显示在屏幕上,其它功能和getche()相同,也是定义在conio.h中。


#include <stdio.h>
#include <conio.h>

int main(void)
{
    char ich1;
    int  ich2,ich3;

    char ch1 = 'q';
    char ch2 = 'u';
    char ch3 = 'a';
    char ch4 = 'n';


    ich1 = getche();    //改进后的字符输入函数
    ich2 = getche();
    ich3 = getche();

    putchar('\n');       //这是回车字符
    putchar(ch1);
    putchar(ch2);
    putchar(ch3);
    putchar(ch4);
    putchar(ich1);
    putchar(ich2);
    putchar(ich3);
    putchar('\n');       //这是回车字符

    return 0;
}  

三、转义字符

前面的例子中,我们已经看很多“\n”,它表示输出时显示一个回车。回车字符是控制字符,无法输入在字符串中间。因此,C语言用“转义字符” 来代替这一类的控制字符。注意:%的输出并不是用“\%”表示,而是用“%%”表示,好象就这一个是特殊的。

字符形式功  能
\0空字符(NULL)
\n换行
\t横向跳格(Tab)
\v竖向跳格(|)
\b退格
\r回车
\f换页字符
\\反斜杠"\"字符
\'单引号(撇号)字符
\"双引号字符
\a响铃字符
\?问号字符
%%百分号字符
\ddd1~3位8进制数所代表的字符
\xhh1~2位16进制数所代表的字符