| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 898 人关注过本帖
标题:putchar()的怪现象
收藏  订阅  推荐  打印 
寻乐的狼
Rank: 2
等级:注册会员
帖子:103
积分:1234
注册:2007-2-16
putchar()的怪现象

最近开始重温C,出现“为什么这次就既能输出字母,也能输出数字?在其中也有PUTCHAR(102)的过程”,请看两次代码的不同
/*
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    putchar(102);     //输出字母f
    system("pause");
    return 0;
}
*/
//如果用while连续输出,其中也有7,那将怎样呢
#include<stdio.h>
#include<stdlib.h>
#define MAX 50
int main(void)
{
    char ch;
    while((ch=getchar())!='#')
    putchar(ch);              //为什么这次就既能输出字母,也能输出数字?在其中也有PUTCHAR(102)的过程
    system("pause");
    return 0;
}
// 开始思考:getchar()是一个行缓冲函数,而while语句表明每次都PUTCHAR(一个字符),
//那么他应该输出的是ASCII码中对应的字母, 难道缓冲只原样输出?
搜索更多相关主题的帖子: putchar  include  现象  void  int  
2008-1-7 00:27
xianshizhe111
Rank: 6Rank: 6
等级:金牌会员
帖子:1451
积分:15818
注册:2007-12-8

第一个是f
第二个当然有数值和字母

因putchar的输出只能是每次一个字符102='f'
第二个是在循环之内 比如:102
他的读取和输出是这样的
第一次循环用getchar读取一个字符并同时把它用putchar输出
以此类推
第二次
第三次
2008-1-7 00:52
寻乐的狼
Rank: 2
等级:注册会员
帖子:103
积分:1234
注册:2007-2-16

是啊,这两个的基本过程是一样的,只是第二个做了几次重复的这个动作,那为何输出就不同了呢

用C打破禁锢的世界
2008-1-7 01:05
xianshizhe111
Rank: 6Rank: 6
等级:金牌会员
帖子:1451
积分:15818
注册:2007-12-8

第一次 1
第二次 0
第三次 2

这属于连续输入102==(三次)
2008-1-7 01:11
xianshizhe111
Rank: 6Rank: 6
等级:金牌会员
帖子:1451
积分:15818
注册:2007-12-8

第一次系统是ASCII (f)不可能把(102) 当一个字符输出 (102)是三个字符
2008-1-7 01:16
寻乐的狼
Rank: 2
等级:注册会员
帖子:103
积分:1234
注册:2007-2-16

是这样,可是当我打入数字4,对应ASCII码应该是个方片,可是它还是输出数字

用C打破禁锢的世界
2008-1-7 01:19
xianshizhe111
Rank: 6Rank: 6
等级:金牌会员
帖子:1451
积分:15818
注册:2007-12-8

这跟getchar 有关
如果:用 getchar 是按ASLII 的顺序输出
   不用 getchar 是按控制字符的顺序输出
   你试试看.
2008-1-7 01:36
linsua
Rank: 3Rank: 3
等级:中级会员
帖子:275
积分:3186
注册:2008-1-2

getchar()读入的是  '4' ,不是4.

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-1-7 01:38
way3
Rank: 2
来自:湖南
等级:注册会员
帖子:83
积分:1106
注册:2007-12-8

在这里,你输入的数字和字母都是字符呀,也就是都是ASCII码,输出当然没有变咯,大家我说的没错吧?
2008-1-7 09:03
寻乐的狼
Rank: 2
等级:注册会员
帖子:103
积分:1234
注册:2007-2-16

原帖由 [bold][underline]xianshizhe111[/underline][/bold] 于 2008-1-7 01:36 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1173251&ptid=196212][/url]
这跟getchar 有关
如果:用 getchar 是按ASLII 的顺序输出
   不用 getchar 是按控制字符的顺序输出
   你试试看.
不太懂,能否用实例解释下

用C打破禁锢的世界
2008-1-7 11:21
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.051447 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved