上面两个程序的结果都是输出a,您怎么证明不同呢?
对不礼貌的女生收钱......
我想我已经明白了
简单点讲...C-FREE与TC区别的原因主要是因为 getchar()和getch()产生的
在TC下getchar()也就是getc(stdin); 是从标准输入流中得到字符的
而 getch() 是从 键盘缓冲区中得到字符的
因为 ungetc 是退回到输入流中 ungetch是退回到键盘缓冲区中 象soft_wind所说 如果他们配对.所产生的结果就是一样的
在TC下..你们可以互相交换配对情况.测试一下.结果应该是不一样的.
而在C-FREE下..经过测试.我们只能认为 getch()并不是从键盘缓冲区中得到字符.而是从输入流中得到字符(至于具体原因我不得而知)
而ungetc和ungetch的功能没有改变..所以.第二种情况是需要用户再一次的输入字符.
[QUOTE]#include <stdio.h>
#include "conio.h"
int main()
{ char str;
char str1;
char str2;
scanf("%c",&str);/*此处输入:love */
printf("%c",str);
puts("\npause");/*这里告诉你运行到哪里了*/
ungetch('a');/* 可换为 ungetc('a',stdin); 来测试*/
/* fflush(stdin); 可添加测试 */
scanf("%c",&str1);/*这两句无需你再输入,是对输入流(原文为"键盘盘缓冲区",不过我认为是输入流)再扫描 */
scanf("%c",&str2);/*这两句无需你再输入,是输入流(同上)再扫描 */
printf("\n%c",str1);
printf("\n%c",str2);
getch();
getch();/* win-tc下有必要C-free下也可以保留 */
return 0;
}[/QUOTE]
请不理解的分别用 TC与 C-FREE 测试以上代码(以上代码原引用knocker的帖子,稍做修改)
测试代码请详细分析 勿忘打印中的 '\n' 与输入的 '\n'
[此贴子已经被作者于2006-8-4 23:48:29编辑过]