当前位置: 代码迷 >> C语言 >> [求助]关于getchar()函数的问题
  详细解决方案

[求助]关于getchar()函数的问题

热度:390   发布时间:2007-05-17 23:19:03.0
[求助]关于getchar()函数的问题

#include <stdio.h>
main( )
{ char ch1,ch2; int n1,n2;
ch1=getchar(); ch2=getchar();
n1=ch1-'0'; n2=n1*10+(ch2-'0');
printf("%d\n",n2);
}
从键盘里输两个字符时我知道,比如:12(回车)输出还是还是12
但是要是只从键盘里输入一个字符呢?ch2=getchar();和n2=n1*10+(ch2-'0');这两句又是怎么执行的呢?(我的调试环境是c-free 3.5)
我输入的几个值:
输入 输出
0 -38
1 -28
2 -18
3 -8

谢谢指点!!!!!!!

搜索更多相关的解决方案: getchar  函数  

----------------解决方案--------------------------------------------------------
不知道说的什么意思啊!能不能清楚点
----------------解决方案--------------------------------------------------------
其中getchar 的用途是从从标准输入流读取一个字符并回显,读回车符时退出.getchar()一次只能接收一个字符
----------------解决方案--------------------------------------------------------

需要这样吗 getchar 获取一个字符 字符实际上是以整数储存的 你再打印的时候 只要用printf 打印的时候用%d 输出就行了 需要的值就回打印出来了


----------------解决方案--------------------------------------------------------
只有一个值怎么可能?你明明用了两个getchar().
----------------解决方案--------------------------------------------------------
以下是引用pvocnxit在2007-5-17 23:19:03的发言:

#include <stdio.h>
main( )
{ char ch1,ch2; int n1,n2;
ch1=getchar(); ch2=getchar();
n1=ch1-'0'; n2=n1*10+(ch2-'0');
printf("%d\n",n2);
}
从键盘里输两个字符时我知道,比如:12(回车)输出还是还是12
但是要是只从键盘里输入一个字符呢?ch2=getchar();和n2=n1*10+(ch2-'0');这两句又是怎么执行的呢?(我的调试环境是c-free 3.5)
我输入的几个值:
输入 输出
0 -38
1 -28
2 -18
3 -8

谢谢指点!!!!!!!

因为0的ASCLL值十进制为48,1为49,2为50。
输入12后,ch1字符变量为1,ch2字符变量为2。n1=49-48 n2=1*10+(50-48)
最后等于十进制12; 你用二个getchar():时要注意,因为他可以读入回车和换行所以 你一定把要输入的字符连着输入。比如想输入a,b就一定要输ab而不能a b 或a'\n'b


----------------解决方案--------------------------------------------------------
楼主:
回车的ASCII是10,你的运行结果其实是相当于输入一个字符在输回车,结果就不难理解了,楼上的兄弟说的很清楚了。

----------------解决方案--------------------------------------------------------
谢谢你们的指点,受教!!!再次感谢!!!
----------------解决方案--------------------------------------------------------
  相关解决方案