0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

getchar()函数详解

麦辣鸡腿堡 来源:CSDN博客 作者:Jambo! 2023-01-22 16:57 次阅读

getchar()

getchar的定义:

int getchar(void)

返回类型是int值,所以返回的是字符的ASCII码

参数列表中是void,所以不必在括号中传参数

如果getchar读取失败,就会返回EOF

getchar()的一个重要机制

在getchar函数的作用与键盘间,存在一个输入缓冲区,从键盘输入的内容会存在这个缓冲中,接下来getchar函数会从缓冲区中取走内容

因为getchar是对于字符进行操作,所以每次执行getchar都会取走输入缓冲区中一个字符

并且getchar还会取走回车也就是\\n与空格

我们用下面的代码进行对输入缓冲区机制的测试:

int main()

{

char ch = 0;

while ((ch = getchar()) != EOF)

{

putchar(ch);

}

return 0;

}

1

2

3

4

5

6

7

8

9

当输入一个字符a时,同时我们会按下回车,此时输入缓冲区中就有两个字符:a\\n

首先,getchar()会先取走字符a,然后通过putchar打印出来

接着循环,getchar()取走字符\\n,然后通过putchar打印出来,所以在输出中光标不在输出的a的后面,而在a的下一行

image.png

接着,输入缓冲区中以无内容,getchar()就会读到EOF,退出循环

还可以用以下代码更进一步验证getchar()对于回车的读取:

int main()

{

int i = 0;

char ch = 0;

while ((ch = getchar()) != EOF)

{

putchar(ch);

i++;

}

printf("%d", i);

return 0;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

输入字符a和b,这里实际上是输入a后,按一次回车,输入b后,按一次回车,所以输入缓冲区中的内容为:a\\nb\\n,所以getchar()会读取四次,所以i的值为会是4

原文链接:https://blog.csdn.net/weixin_64116522/article/details/127956631

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4303

    浏览量

    62402
  • 代码
    +关注

    关注

    30

    文章

    4741

    浏览量

    68317
收藏 人收藏

    评论

    相关推荐

    stm32f103rct6 prinrf可以正常使用,但是无法使用getchar和scanf函数,为什么?

    已使用如下代码重定向,prinrf可以正常使用,但是无法使用getchar和scanf函数,求大佬解答 #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int
    发表于 04-09 07:47

    USART中的getchar()函数功能不能实现

    int fputc(int ch, FILE *f)#define GETCHAR_PROTOTYPE int fgetc(FILE *f)#endif /* __GNUC__ */和下面这两个函数定义
    发表于 11-08 08:58

    linux getchar函数的特点与使用

    1)函数原型int getchar(void);2)函数功能从stdin中读取一个字符。3)返回值返回读取字符的ASCII值或者EOF字符或者出错值。4)头文件#include
    发表于 07-24 07:21

    getch()与getchar()函数的区别是什么?

    getch()与getchar()函数的区别是什么?
    发表于 10-14 08:31

    怎样用printf 函数getchar 函数去简化STM32串口数据的传输呢

    printf 函数getchar 函数有何功能?怎样用printf 函数getchar 函数
    发表于 10-22 07:49

    新手求助启用RT_USING_POSIX时getchar调用过程

    给各位大佬倒茶,想求助下在开启RT_USING_POSIX时,串口getc()函数到系统getchar()函数之间的调用路径。小弟在调试大佬编写的的web_terminal组件时发现如果开启了
    发表于 11-14 14:17

    getch与getchar的区别是什么?

    1.getchar();从键盘读取一个字符并输出,该函数的返回值是输入第一个字符的ASCII码;若用户输入的是一连串字符,函数直到用户输入回车时结束,输入的字符连同回车一起存入键盘缓冲区。若程序中有
    发表于 06-20 08:59

    PICC库函数详解

    PICC库函数详解
    发表于 04-18 20:13 132次下载

    Android开发手册—API函数详解

    Android开发手册—API函数详解
    发表于 10-17 09:01 13次下载
    Android开发手册—API<b class='flag-5'>函数</b><b class='flag-5'>详解</b>

    基于Android开发手册—API函数详解

    基于Android开发手册—API函数详解
    发表于 10-24 09:06 18次下载
    基于Android开发手册—API<b class='flag-5'>函数</b><b class='flag-5'>详解</b>

    网络函数的习题与详解详细说明

    本文档的主要内容详细介绍的是网络函数的习题与详解详细说明。
    发表于 09-28 08:00 0次下载
    网络<b class='flag-5'>函数</b>的习题与<b class='flag-5'>详解</b>详细说明

    Linux内核GPIO操作函数详解分析

    本文档的主要内容详细介绍的是Linux内核GPIO操作函数详解分析免费下载。
    发表于 01-22 16:58 28次下载

    Android开发手册API函数详解资料免费下载

    本文档的主要内容详细介绍的是Android开发手册API函数详解资料免费下载。
    发表于 02-22 08:00 0次下载

    空闲任务钩子函数详解

    空闲任务钩子函数详解 1、钩子函数 FreeRTOS中有多个钩子函数,钩子函数类似回调函数,当某
    的头像 发表于 07-30 10:57 1010次阅读
    空闲任务钩子<b class='flag-5'>函数</b><b class='flag-5'>详解</b>

    STM32库函数SystemInit()详解

    STM32库函数SystemInit()详解
    的头像 发表于 09-18 15:45 3813次阅读
    STM32库<b class='flag-5'>函数</b>SystemInit()<b class='flag-5'>详解</b>