鱼C论坛

 找回密码
 立即注册
查看: 1374|回复: 2

大神能不能帮帮解释下getchar函数 ,就这个题

[复制链接]
发表于 2020-7-3 20:31:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
    char cl, c2, c3, c4, c5, c6;
    scanf("%c%c%c%c", &cl, &c2, &c3, &c4);
    c5 = getchar();
    c6 = getchar();
    putchar(cl);
    putchar(c2);
    printf("%c%c\n", c5, c6);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-3 23:17:55 | 显示全部楼层
输入时
c1,c2,c3,c4分别被赋值abc\n
c5,c6获得de
剩下的fg\n没有储存?
然后puchar输出了ab
printf输出了de
我也是新手,个人见解哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-4 09:01:47 | 显示全部楼层
scanf()和getchar()在此问题中都是同一个作用----读取输入字符(英文状态下键盘按下就算一个,无论是否看得到)。
按照scanf()里面的格式控制"%c%c%c%c" 即认为要从缓冲区读取连续的个字符,
后续的getchar()则是读取缓冲区首个字符;
按照输入不难看出缓冲区里面的字符: 'a' 'b' 'c' '\n' 'd' 'e' 'f' 'g' '\n';
先读取4个分别赋值给c1 c2 c3 c4, 此时缓冲区还剩 'd' 'e' 'f' 'g' '\n',再读取两个赋值给c5 c6,最终缓冲区还有'f' 'g' '\n';
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 13:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表