标题:putchar()的怪现象
只看楼主
寻乐的狼
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2007-2-16
结帖率:100%
 问题点数:0 回复次数:12 
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-01-07 00:27
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
第一个是f
第二个当然有数值和字母

因putchar的输出只能是每次一个字符102='f'
第二个是在循环之内 比如:102
他的读取和输出是这样的
第一次循环用getchar读取一个字符并同时把它用putchar输出
以此类推
第二次
第三次
2008-01-07 00:52
寻乐的狼
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2007-2-16
得分:0 
是啊,这两个的基本过程是一样的,只是第二个做了几次重复的这个动作,那为何输出就不同了呢

用C打破禁锢的世界
2008-01-07 01:05
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
第一次 1
第二次 0
第三次 2

这属于连续输入102==(三次)
2008-01-07 01:11
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
第一次系统是ASCII (f)不可能把(102) 当一个字符输出 (102)是三个字符
2008-01-07 01:16
寻乐的狼
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2007-2-16
得分:0 
是这样,可是当我打入数字4,对应ASCII码应该是个方片,可是它还是输出数字

用C打破禁锢的世界
2008-01-07 01:19
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
这跟getchar 有关
如果:用 getchar 是按ASLII 的顺序输出
   不用 getchar 是按控制字符的顺序输出
   你试试看.
2008-01-07 01:36
linsua
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2008-1-2
得分:0 
getchar()读入的是  '4' ,不是4.

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-01-07 01:38
way3
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-12-8
得分:0 
在这里,你输入的数字和字母都是字符呀,也就是都是ASCII码,输出当然没有变咯,大家我说的没错吧?
2008-01-07 09:03
寻乐的狼
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2007-2-16
得分:0 
原帖由 [bold][underline]xianshizhe111[/underline][/bold] 于 2008-1-7 01:36 发表 [url=http://bbs.][/url]
这跟getchar 有关
如果:用 getchar 是按ASLII 的顺序输出
   不用 getchar 是按控制字符的顺序输出
   你试试看.

不太懂,能否用实例解释下

用C打破禁锢的世界
2008-01-07 11:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-196212-1-1.html




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

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