当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 无法执行scanf?????/
帖子发表于 : 2016-07-01 17:21 

注册: 2015-06-19 21:16
帖子: 41
送出感谢: 26
接收感谢: 0 次
我用c写了一个简单的计算器,第28行scanf不能正常执行,以下是代码,请问怎么回事?谢谢
(用goto的目的是希望计算完之后询问用户是否进行第二次运算,还是退出)

#include<stdio.h>
#include<ctype.h>
int main(void)
{
char linn;
head1:
{char symbol;
float num1,num2,result,yushu;
printf("please input a 算式\n");
scanf("%f %c %f",&num1,&symbol,&num2);
if(symbol=='+'||symbol=='-'||symbol=='*'||symbol=='/')
switch (symbol)
{
case '+':
result=num1+num2;break;
case '-':
result=num1-num2;break;
case '*':
result=num1*num2;break;
case '/':
{result=num1/num2;break;}
}
else
printf("you have input a wrong symbol\n");
printf("%f\n",result);}
printf("if you want to calculate again please input y or Y\n"
"if you do not want,please input n or N\n");
scanf("%c",&linn); //就是这个scanf无发执行!!!!!
if(tolower(linn)=='y')
goto head1;
else if(tolower(linn)=='n')
printf("goodbye......\n");
}


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 无法执行scanf?????/
帖子发表于 : 2016-07-01 18:10 

注册: 2011-02-14 17:46
帖子: 907
送出感谢: 3
接收感谢: 124
没仔细看,但十有八九是读了缓冲区残留的那个回车



_________________
评价: 3.7% hanis_ghost
 
页首
 用户资料  
 
3 楼 
 文章标题 : Re: 无法执行scanf?????/
帖子发表于 : 2016-07-01 20:27 
头像

注册: 2008-09-18 13:11
帖子: 2951
送出感谢: 1
接收感谢: 495
如二楼所说,linn中读到的是上一个scanf时所输入的'\n'。在这之前用getchar()把那个换行符从缓冲区里弄掉就是了



_________________
评价: 3.7% hanis_ghost
 
页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译