中易网

本人想用C语言写一段ascii码转int的代码

答案:1  悬赏:20  
解决时间 2021-01-15 02:41
  • 提问者网友:雾里闻花香
  • 2021-01-14 08:16
本人想用C语言写一段ascii码转int的代码
最佳答案
  • 二级知识专家网友:爱难随人意
  • 2021-01-14 09:39
大兄弟,你的程序总体来说没有逻辑问题,就是不知你懂不懂回车也是一个字符?
是这样的,因为回车也是一个字符,而scanf没有把回车接收,于是回车留在缓冲区,我帮你改了一下,删了一些没有影响的东西,总的来说,选择1时,程序确实执行1的命令,但是回车被getchar接收,于是输出10,10就是回车转ascll码的值,选择2,也没错,但是回车未接收,所以2中的getchar()充当接收回车符的语句,于是不执行,然后程序结束.
其实你只要在scanf()下添加一个getchar()就好了
#include
#include
int main()
{
int n;
char ch;
printf("请选择类型的转换:
");
printf("1:ascii转int 2:int转ascii
");
scanf("%d",&n);
getchar();    //用来接收scanf未接收的回车
switch(n)
{
case 1:
printf("请输入一个ascii码:
");
printf("%d
",getchar());break;
case 2:
printf("请输入一个int(0~128):
");
printf("%c
",getchar());break;
default:
printf("error:无效的选择
");
break;
}
system("pause");
return 0;
}如果有什么问题就提出喔,没问题可以采纳吧.
追问我回去找了找scanf的百度百科,拉到下面注意问题有个问题二,说是ascii码10是换行符,不是回车符,原话如此:“每击打一下"Enter"键,向键盘缓冲区发去一个“回车”(\r),一个“换行"(\n),在这里\r被scanf()函数处理掉了(姑且这么认为吧^_^),而\n被scanf()函数“错误”赋值”。追答windows系统是\r\n,可linux是\n而已,不同系统的C语言运行库的IO都会处理这些字符,还没听说\n会被“错误”处理的,只不过写程序编译后时是将\n转换成\r\n。但是换行符是\n,回车符是\r我之前确实口误了追问其实我昨晚看了有两个问题的,不过为了写上一个追问没字数了,先谢谢你阿,这么细心。1、scanf在这里是%d格式化输入吧,那么是不是读入回车就结束?2、为什么选择2,回车未接收,2中的getchar()充当接收回车符的语句,于是不执行?其实我昨晚看了有两个问题的,不过为了写上一个追问没字数了,先谢谢你阿,这么细心。1、scanf在这里是%d格式化输入吧,那么是不是读入回车就结束?2、为什么选择2,回车未接收,2中的getchar()充当接收回车符的语句,于是不执行?追答不是不执行,而是把\n输出了,如果用putchar('\n');的话相当于你的printf("%c",getchar());会发现你要输出一个换行符就是一个“看不到”的回车,且getchar接收了换行符。
1.scanf不是读入回车结束,如果你要进行多个scanf函数分别连续输入的话,你会发现回车的影响真的不可忽视,要不就用getchar接收,要不就用fflush清空缓冲区。2.上面已经讲了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息