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码中对应的字母, 难道缓冲只原样输出?
----------------解决方案--------------------------------------------------------
第一个是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 是按控制字符的顺序输出
你试试看.
这跟getchar 有关
如果:用 getchar 是按ASLII 的顺序输出
不用 getchar 是按控制字符的顺序输出
你试试看.
不太懂,能否用实例解释下
----------------解决方案--------------------------------------------------------