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

请分析下这个函数的意义解决方法

2012-02-25 
请分析下这个函数的意义小弟标识出有点疑问导致整个程序费解,请详细指点下啦,谢谢了#include ctype.hint

请分析下这个函数的意义
小弟标识出有点疑问导致整个程序费解,请详细指点下啦,谢谢了
#include <ctype.h>
int   getch(void);
void   ungetch(int);
int   getop(char   s[])
{
int   i,c;
while((s[0]=c=getch())== '   '||c== '\t ')  
;                      
s[1]= '\0 ';         //---跳过空格和制表符后呢,s[1]= '\0 ';表是s[]数组结  
                          //     束了啊,难   道 '\0 '后s[]还能存储字符吗?所以后面的if  
                        //     有什么用呢程序就return   '0 ',下面的那些if   不是多余?
                      //       就这个程序能举个例输入说明一下吗?拜托了:)    

if(isdigit(c)&&c!= '. ')
    return   c;
i=0;
if(isdigit(c))
      while(isdigit(s[++i]=c=getch()))
          ;
if(c== '. ')
      while(isdigit(s[++i]=c=getch()))
          ;
s[i]= '\0 ';
if(c!=EOF)
      ungetch(c);
      return   ‘0’;  
}
我用的是win-tc   编译器怎样看到程序执行的顺序啊!?  
我搞不懂这个程序是这么执行的.谢谢

[解决办法]


#include <ctype.h>
int getch(void);
void ungetch(int);
int getop(char s[])
{
int i,c;
while((s[0]=c=getch())== ' '||c== '\t ') //跳过制表符和空格.
;
s[1]= '\0 '; //保留上次读取的那个字符.

if(isdigit(c)&&c!= '. ') //如果c是一个数字,同时不是一个 '. '返回c.这有点逻辑混乱.
return c;
i=0;
if(isdigit(c)) //此处一定不是数字.如果是数字的话,上边已经返回了.
while(isdigit(s[++i]=c=getch())) //读去字符赋值给s数组,直到不是数字.
;
if(c== '. ') //如果上此读取的最后一个字符是 '. '时,继续读并赋值给s数组
while(isdigit(s[++i]=c=getch()))
;
s[i]= '\0 '; //读取的那个费数字字符填成空.
if(c!=EOF) //如果上次读取的是正确字符
ungetch(c); //把这个字符回退到输入流里.
return ‘0’; //返回 '0 '字符.
}

热点排行