关于getchar()函数的问题,求大神帮忙

jiahao__liu 2017-09-20 10:09:24
代码如下:


#include<stdio.h>
int main(void)
{
int a,b,c;
int d,e,f,i;



printf("Please input a character!\n");
while(1)

{
f=getchar();

a=f-64;
for(i=1;i<=a;i++)
{
for(b=1;b<=a+1-i;b++)
putchar(' ');
for(c=65;c<=64+i;c++)
putchar(c);
for(d=63+i;d>=65;d--)
putchar(d);
putchar('\n');
}
}

return 0;
}

当我输入一个字符比如G时,打印出结果之后我认为还留有一个换行符在缓冲区,那么下次循环getchar()会读取这个换行符。但实际情况是getchar()每次都只会读取我输入的字符。
...全文
229 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiahao__liu 2017-09-23
  • 打赏
  • 举报
回复
貌似scanf是会自动跳过换行符的吧
自信男孩 2017-09-21
  • 打赏
  • 举报
回复
如果用getchar();换成scanf("%c", &ch);那么你预想的情况就会出现。 getchar();
引用 2 楼 a645328869 的回复:
的确吃掉了。但是换行的ASCII是10,10-64=-54,不满足循环,没做什么事情。你在for循环外面写一个输出语句就看到变化了。
赞同,建议楼主在f=getchar();这句后面加上一句调试语句printf("%d\n", f); 你会发现会输出10(输出两行,但是其中一行是10)就是回车符;
  • 打赏
  • 举报
回复
可以用getch来获取。 或者getchar后用fflush(stdiin)清理一下缓冲区。
OldHello 2017-09-21
  • 打赏
  • 举报
回复
的确吃掉了。但是换行的ASCII是10,10-64=-54,不满足循环,没做什么事情。你在for循环外面写一个输出语句就看到变化了。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧