题目:
修改getop函数,使其不必使用ungetch函数。提示:可以使用一个static类型的内部变量解决该问题
自我解答:
先看书中的getop函数:
#include <stdio.h>
#include <ctype.h>
#include "calc.h"
int getop(char s[])
{
int i, c;
while((s[0] = c = getch()) == ' ' || c == '\t');
s[1] = '\0';
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 NUMBER;
}
ungetch函数的作用是把字符压回到buf中,进而再取字符时先从buf中取得。
用static变量,则可以把这个要保存的字符保存到这个static变量中。
参考答案:
#include <stdio.h>
#incl