tc2.0中scanf函数字符缓存的问题?

thinkxl 2005-02-21 11:36:59
这是在tc2.0下做的一道题,按正常情况应该是输入2个字符,然后在输出两个字符,可是在我实验的时候,系统只要求输入一个字符,然后就自动结束,我用F7单步执行并跟踪i,j两个变量的时候,发现i变量的值是我输入的值,然后j变量是'\n',我就是一个回车符,但实际是我不想第二个变量也只是一个回车符呀,请问该怎么办?以前好像听人说是scanf函数有个字符缓存,j变量就是从字符缓里的读取的。
#include "stdio.h"
main()
{ char i,j;
scanf("%c",&i);
scanf("%c",&j);
printf("%c %c",i,j);
}
...全文
557 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Flood1984 2005-02-28
  • 打赏
  • 举报
回复
在每次scanf()后加个getch()吸收掉回车即可。




baggiojj 2005-02-21
  • 打赏
  • 举报
回复
因为这两个变量都是字符型的,所以系统会依次从字符缓存中读取一个字符大小的值并将其赋给i和j。
如果你敲了“回车”,它也会进入这个缓存的。所以你不需回车,直接连续输入两个变量的值,再回车就可以了。
sharkhuang 2005-02-21
  • 打赏
  • 举报
回复
right
ybt631 2005-02-21
  • 打赏
  • 举报
回复
刚才还一个回帖都没有的,现在就...
ybt631 2005-02-21
  • 打赏
  • 举报
回复
#include "stdio.h"
main()
{ char i,j;
scanf("%c\n%c",&i,&j);

printf("%c %c",i,j);
}
sumjohn 2005-02-21
  • 打赏
  • 举报
回复
scanf("%c",&i);
getchar(); //中间多放一个
scanf("%c",&j);
piaozi2003 2005-02-21
  • 打赏
  • 举报
回复
scanf(" %c",&i);
scanf(" %c",&j);

使用空格可以保证输入流中过滤空格、TAB、\n这三中字符
kobefly 2005-02-21
  • 打赏
  • 举报
回复
#include "stdio.h"
main()
{ char i,j;
scanf("%c",&i);
fflush(stdin);
scanf("%c",&j);
fflush(stdin);
printf("%c %c",i,j);
}
hwbin2008 2005-02-21
  • 打赏
  • 举报
回复
scanf("%c\n%c",&i,&j);

这个确实是可以的,把'\n'换成' '也可以。。。
不知道这种情况如何解释???
whw83 2005-02-21
  • 打赏
  • 举报
回复
#include "stdio.h"
main()
{ char i,j;
scanf("%c",&i);
fflush(stdin);
scanf("%c",&j);
fflush(stdin);
printf("%c %c",i,j);
}
我觉得还是这个比较可靠,其他的对输入限制太多了。不太保险。
piaozi2003 2005-02-21
  • 打赏
  • 举报
回复
居然有这么多人回答,但我敢肯定我的方法最简单! 且是C的标准答案!

使用fflush()简直就是不拿运行时间当回事.
junnyfeng 2005-02-21
  • 打赏
  • 举报
回复
就是这样了,接分
Dong 2005-02-21
  • 打赏
  • 举报
回复
scanf("%c",&i);
fflush(stdin);//去掉输入缓冲区的内容,(去掉回车)
scanf("%c",&j);
Student02370236 2005-02-21
  • 打赏
  • 举报
回复
申明char ch;然后再加一句ch=getchar()就可以了

70,039

社区成员

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

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