0
点赞
收藏
分享

微信扫一扫

C程序设计语言——getchar相关学习

爱奔跑的读书者 2022-04-29 阅读 62
c语言

学到了char的相关知识,写篇文章记录一下。

int也可以用来接收char类型的数据,此时int变量的值是char值对应的ASCII码。

在这个例子里输入q,int变量存储的是q对应的ASCII码值113,同时还换行输出了一个10。

输出这个10是因为在输入q之后输入了换行,因此putchar将换行也输出了。

这里为什么用int来存储字节,而不是用char呢?我们后面再解释


我们修改一下程序再测试一次。

 

这次不再输出换行符了。

补充:int=0时没有对应的字符,因为ASCII码0表示NULL,空字符。


同时还发现了一个新问题:getchar一次只能处理一个字符,为什么可以一次键入多个字符呢?

经过一番查阅在其他老哥的博客上找到了答案;

因为当getchar调用的时候,程序就会等待用户输入,将用户的输入全部存在键盘缓冲区里面,直到用户输入回车为止,因此缓冲区的最后一位往往是\n(也可以是EOF,后文再说)。 然后getchar会依次处理键盘缓冲区里的内容,直到缓冲区中的字符读完后,才算是执行完成。


接下来解释EOF  ,顺便解释开头图片红框圈住的文字

EOF(End Of File)是文件结束符,在Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D。

EOF在标注库里定位为-1。

同时char有signed和unsigned之分,C语言标准中没有规定,所以这就取决于编译器的实现了。

如果是signed char,赋值为-1没什么问题。

如果是unsigned char,则不能赋值为负数。

因此为了避免将-1赋值给unsigned char的情况,函数中不用char来存储输入的字符,而选择int来存储,因为int默认是signed,unsigned int需要特殊声明。

举报

相关推荐

0 条评论