getchar()函数与scanf()函数相关知识点

来源:互联网 发布:淘宝上卖真蜂蜜的店铺 编辑:程序博客网 时间:2024/06/14 08:06
【项目1-字母及其编码】
编写一个程序,从键盘上输入一个小写字母,显示这个小写字母及它所对应的大写字母以及它们的ASCII码值。
#include <stdio.h>#include <stdlib.h>int main(){    char ch;    printf("请输入一个小写字母:\n");    scanf("%c",&ch);    printf("小写字母%c对应的大写字母为%c,对应的ASCII码为:%d\n",ch,ch-32,ch);//小写字母和对应的大写字母的ASCII码相差32.    return 0;}
心得体会:
  1. 对于char类型和int类型,可以理解为对内存单元中的数据解析方法不同。以上代码在编译时会用警告,是因为对应的类型不同,可以忽略。
  2. 在计算机中任何数据最终都是以0101的二进制代码表示,字符不能直接转为二进制,它是先将每个字符对应一个ASCII码,即一个整形数,然后将整形数转为二进制。使计算机能够识别。
  3. 对于%c使计算机一字符型来解析ch这个存储单元,%d则以整形来解析。


提升:
1、缓冲区:对于输入字符立即回显的是无缓冲。缓冲分为:完全缓冲和行缓冲。
  • 完全缓冲:缓冲区满时被清空,常见缓冲区大小为512B、4096B。常用于文件的输入。
  • 行缓冲:遇到一个换行符时,将清空缓冲区(即回显),(键盘输入)。
2、getchar()和putchar()函数:这两个函数分别是字符输入、输出函数,getchar()函数的返回值为int类型,无形参。putchar()函数返回值也为int类型,并带有int类型的形参。
3、对于以上两个输入、输出函数的换回值均为int类型,通常写代码时是这样定义的:
char ch;ch=getchar();

注意:getchar()返回一个整型值而不是字符值!

若把getchar返回值存储于ch中,将导致它被截断!允许以上代码并不会出错,字符是以ascii码表示的,0-127;但对于一下可能存在错误:

char  ch ;while((ch=getchar())!= EOF ) ;
这个被截断的值被提升为整形并与EOF比较,循环会出错。

4、注意:C的整型算数运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符型和短整型操作数在使用之前被转换为普通整型。即:整型提升


0 0
原创粉丝点击