终究错在哪里了?
- 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)先开始喽