| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3111 人关注过本帖
标题:ungetc 和 ungetch 的区别
只看楼主 加入收藏
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
不是吧,感觉怎么像在证明光子说?我可不是泊松.....
上面两个程序的结果都是输出a,您怎么证明不同呢?

对不礼貌的女生收钱......
2006-08-04 20:29
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
难道不一样?我自己写的我怎么会不知道

对不礼貌的女生收钱......
2006-08-04 20:35
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
咦...在TC下结果还真是一样地.

应该是不一样的才对啊...老K呢.怎么回事这?

在C-FREE下是不一样的啊.

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-08-04 20:38
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
见鬼,在c-free确实不一样,第二个程序字符a没有被读入键盘缓冲区,怎么回事?

对不礼貌的女生收钱......
2006-08-04 20:45
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
不知道  :)


偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-08-04 20:48
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

校内的宽带太慢了,我一直点击都发不出去,没想一发就发了三个帖,晕死了!
我删了.


对不礼貌的女生收钱......
2006-08-04 20:52
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 

应该是 CFREE中的正确的吧 ,只有返回 输入缓冲的 才可以被读取
个人意见


~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2006-08-04 22:11
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

我想我已经明白了

简单点讲...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编辑过]


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-08-04 23:43
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
谢谢LS的总结

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2007-08-17 13:16
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


积分!是负的?!

(づ ̄ 3 ̄)づ
2007-08-17 18:44
快速回复:ungetc 和 ungetch 的区别
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028302 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved