请分析下这个函数的意义
小弟标识出有点疑问导致整个程序费解,请详细指点下啦,谢谢了
#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 '字符.
}