当前位置: 代码迷 >> C语言 >> putchar()的怪现象
  详细解决方案

putchar()的怪现象

热度:574   发布时间:2008-01-07 00:27:29.0
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  

----------------解决方案--------------------------------------------------------
第一个是f
第二个当然有数值和字母

因putchar的输出只能是每次一个字符102='f'
第二个是在循环之内 比如:102
他的读取和输出是这样的
第一次循环用getchar读取一个字符并同时把它用putchar输出
以此类推
第二次
第三次
----------------解决方案--------------------------------------------------------
是啊,这两个的基本过程是一样的,只是第二个做了几次重复的这个动作,那为何输出就不同了呢
----------------解决方案--------------------------------------------------------
第一次 1
第二次 0
第三次 2

这属于连续输入102==(三次)
----------------解决方案--------------------------------------------------------
第一次系统是ASCII (f)不可能把(102) 当一个字符输出 (102)是三个字符
----------------解决方案--------------------------------------------------------
是这样,可是当我打入数字4,对应ASCII码应该是个方片,可是它还是输出数字
----------------解决方案--------------------------------------------------------
这跟getchar 有关
如果:用 getchar 是按ASLII 的顺序输出
   不用 getchar 是按控制字符的顺序输出
   你试试看.
----------------解决方案--------------------------------------------------------
getchar()读入的是  '4' ,不是4.
----------------解决方案--------------------------------------------------------
在这里,你输入的数字和字母都是字符呀,也就是都是ASCII码,输出当然没有变咯,大家我说的没错吧?
----------------解决方案--------------------------------------------------------
原帖由 [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 是按控制字符的顺序输出
   你试试看.

不太懂,能否用实例解释下
----------------解决方案--------------------------------------------------------