首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-11 
终究错在哪里了?C/C++ codeint getsth(FILE* & filein, int &obj1, char &obj2){//返回值:0~eof1~数字2~运

终究错在哪里了?

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)先开始喽

热点排行