读书人

终究错在哪里了?该怎么处理

发布时间: 2012-02-11 09:51:34 作者: rapoo

终究错在哪里了?

C/C++ code
int getsth(FILE* & filein, int &obj1, char &obj2){    //返回值:0~eof   1~数字  2~运算符    if(fscanf(filein,"%d",&obj1) == 1)        return 1;    if(fscanf(filein,"%c",&obj2) == 1)    {        if(obj2 == ' ')        {            return getsth(filein, obj1, obj2);        }        else            return 2;    }}//调用如下:operators.push('\n'); //堆栈state = getsth(filein, num, ch);while(state == 1 ||(state == 2 && ch != '\n') || operators.top() != '\n'){   if(state == 1)   {       operands.push(num);       state = getsth(filein, num, ch);   }   else       //


filein文件中的内容是4 + 3\n,我在调试的时候,第一次跳进getsth(),把4读进num里,return 1,第二次把空格读进ch里,然后进入这里面
if(fscanf(filein,"%c",&obj2) == 1)
{
if(obj2 == ' ')
{
return getsth(filein, obj1, obj2);
}
}调用自身,然后本来该读取‘+’了,但是直接跳进了
if(fscanf(filein,"%d",&obj1) == 1)
return 1;
并把3读进了num,请高人指点,郁闷中。。。


[解决办法]
你递归,当然是从if(fscanf(filein,"%d",&obj1) == 1)先开始喽

读书人网 >C语言

热点推荐