m0_56197713 2021-03-18 22:24 采纳率: 100%
浏览 21
已采纳

为什么输出ASCII码不注释掉其他行就会执行错误

//注释掉其他行就可以正常输出ASCII码
int main()
{
	int a, b;
	float x, y;
	char c1, c2;
	//printf("please scanf a,b;\n");
	//scanf("%d,%d", &a, &b);
	//printf("please scanf x,y;\n");
	//scanf("%f,%f", &x, &y); 
	//printf("please scanf c1,c2;\n");
	scanf("%c,%c", &c1, &c2);
	//printf("%d,%d,%.2f,%.2f,\n",a,b,x,y);
	printf("%c,%c", c1, c2);
	return 0;
}
//删掉注释就无法正常输出
int main()
{
	int a, b;
	float x, y;
	char c1, c2;
	printf("please scanf a,b;\n");
	scanf("%d,%d", &a, &b);
	printf("please scanf x,y;\n");
	scanf("%f,%f", &x, &y); 
	printf("please scanf c1,c2;\n");
	scanf("%c,%c", &c1, &c2);
	printf("%d,%d,%.2f,%.2f,\n",a,b,x,y);
	printf("%c,%c", c1, c2);
	return 0;
}

注释掉其他行正常输出

取消注释输出错误

 

  • 写回答

2条回答 默认 最新

  • ProfSnail 2021-03-18 22:40
    关注

    scanf()处理%d和%f的时候,都会自动过滤掉前面的空格或者换行符,而处理%c的时候,会将\n或者空格都原样的读入,而不会过滤。

    问题应该出在了你scanf("%c,%c")的时候。在此之前你输入两个浮点数的时候,换行符送到了c1里面。

    解决方案,在最后一个scanf("%c")之前,加入一个getchar();以消除换行符对你程序的影响。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?