C语言之输入

C语言与接收键盘输入的函数有以下几个:scanf这个是大家都熟悉的,也是经常用到的;其次是接收字符输入的,如getchar,getch,getche(这个也是我刚刚知道的。)

1. getchar, getch, getche的区别

这三者都必须要包含头文件conio.h。最先我教学生使用这个是在main函数最后,可以让程序暂停一下。自己也没有注意有啥区别,甚至都不知道有getche函数的存在。问题出来了,有时候getchar不象想像的那么好用,甚至我希望它停顿的时候没有停顿。查了一下,才知道区别还是挺大的。不说了,转一下别人的例子:
 
(1) getch()和getche()函数
    这两个函数都是从键盘上读入一个字符。其调用格式为:
     getch();
     getche();
    两者的区别是: getch()函数不将读入的字符回显在显示屏幕上, 而getche()函数却将读入的字符回显到显示屏幕上
    例1:
     #include<stdio.h>
     main()
     {
          char c, ch;
          c=getch();     /*从键盘上读入一个字符不回显送给字符变量c*/
          putchar(c);    /*输出该字符*/
          ch=getche();   /*从键盘上带回显的读入一个字符送给字符变量ch*/
          putchar(ch);
     }
    利用回显和不回显的特点, 这两个函数经常用于交互输入的过程中完成暂停等功能
    例2:
     #include<stdio.h>
     main()
     {
          char c, s[20];
          printf("Name:");
          gets(s);
          printf("Press any key to continue...");
          getch();  /*等待输入任一键*/
     }


接下来看一下getchar()
   getchar()函数也是从键盘上读入一个字符, 并带回显。它与前面两个函数的区别在于: getchar()函数等待输入直到按回车才结束,  回车前的所有输入字符都会逐个显示在屏幕上。但只有第一个字符作为函数的返回值。
    getchar()函数的调用格式为:
     getchar();
    例3:
     #include<stdio.h>
     main()
     {
          char c;
          c=getchar();   /*从键盘读入字符直到回车结束*/
          putchar(c);    /*显示输入的第一个字符*/
          getch();       /*等待按任一健*/
     }

还有一点很重要的区别,是在给学生讲的时候才发现的,getchar并不是直接从键盘读的数据,它是从缓冲区读的。请看:
  1. void main()
  2. {
  3.     char a;
  4.     char b[10];
  5.     printf("please input a number:/t");
  6.     scanf("%c",&a);
  7.     printf("You input:%c/n", a);
  8.     printf("Now, input a string:");
  9.     scanf("%s", b);
  10.     char c = getchar(); //猜猜这里c的值?          
  11.     return;
  12. }
对了,这里getchar读取的是上一个输入,也就是scanf的换行符(10)。这一点在scanf中也存在,看看下面的例子:
  1.    1. void main()
  2.    2. {
  3.    3.     char a;
  4.    4.     char b[10];
  5.    5.
  6.    6.     printf("please input a number:/t");
  7.    7.     scanf("%c",&a);
  8.    8.
  9.    9.     printf("You input:%c/n", a);
  10.   10.
  11.   11.     printf("Now, input a string:");
  12.   12.     scanf("%s", b);
  13.   13.
  14.   14.     char c;
  15.           scanf("%c",&c);  //这个地方的c值呢?        
  16.   16.     return;
  17.   17. }
对的,原理与getchar一样,还是回车符。显然这个c值不是我们所期待的。有啥办法解决,可能用getch来替代这里的scanf。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值