c语言中的getchar()和putchar()

getchar()和putchar()函数时字符输入输出函数,其返回值都是int 整型。
getchar()从键盘上输入一个字符,函数的返回值是输入的第一个字符的ASCII码字符的ASCII值,若出错返回-1,且将用户输入的字符回显到屏幕。
注意:(1)用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键
(2)getchar()函数也将回车键作为一个回车符读入,要注意在连续输入两个字符时要注意回车符。
(3)当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.
(4).执行getchar()输入字符,键入字符后需要按回车键,回车后程序才会响应输入,继续执行后续语句。

int  c = 0;
    while ((c = getchar())!=EOF &&c!='\n')
    {
        printf("%d",c);;
    }

上述程序getchar()函数获取当前控制台的输入,直到按回车键结束,并将其输出。
若果将其printf(“%c”,c); 换成printf(“%d”,c); 就会输出其字符的ASCII码值。

getchar()函数从标准输入读取一个字符并返回它的值。如果输入中不在存在任何字符,函数就会返回常量EOF,用于提示文件的结尾。
从getchar()函数返回的值呗赋给变量c,然后把它与EOF比较。在赋值表达式两端加上括号用于确保赋值操作优先于比较操作。如果c等于EOF,整个表达式的值为假,整个表达式的值就为假,循环将终止。如果不是这样,再把c与换行符比较,如果两者相等,循环也将终止。

一个问题:c为什么被声明成整型,而事实上需要它来读取字符?
因为EOF是一个整型值,它的位数比字符类型要多,把c声明为整型可以防止从输入读取的字符意外的被解释为EOF(如果c声明为char类型,字符c接收 getchar 等函数的返回值会导致对 EOF 的辨认出错,或者错把好的数据误认为是 EOF,或者把 EOF 误认为是好的数据。) 字符只是一个小整型数,用int类型类容纳字符类型 并不会出现问题,相反,就可能出现数据截断问题。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值