에러 질문입니다..ㅜㅜㅜ
휘율
수식의 토큰을 하나씩 받아서 수식이 맞는지 틀린지 확인하는 프로그램인데요 결과값이 이상하게 나옵니다.
대충 생각해보니까 enum 으로 설정해놓은 plus, star 등등이 정수로 되어있고
수식에서 받은 +, *, (, ) 는 문자여서 함수들 안에 while이 돌지 않아서 제대로 된 결과값이 안나오고 잘못된 수식이라고만 나오는데요 이걸 어떻게 수정해야 할까요? ㅠㅠ
isspace로 공백 무시처리도 안먹혀서 공백도 토큰으로 읽어오는데 이것은 어떻게 해야 공백 무시 되나요?
부탁드립니다..ㅠㅠㅠㅠㅠㅠ
질문 내용 :
#include stdio.h
#include string.h
#include ctype.h
typedef enum {plus, star, number, lp, rp};
char token;
void get_next_token();
void expr();
void term();
void factor();
void error();
int main(void){
char oper[20];
char *p_oper = oper;
printf(수식을 입력하세요.\n);
scanf(%s, oper);
get_next_token(&p_oper);
//expr();
printf(%c\n, token);
return 0;
}
void get_next_token(char **oper){
char* s = *oper;
while( *s && isspace(*s) )
s++;
token = *s++;
*oper = s;
}
void expr(){
term();
while(token == plus){
printf(plus\n);
get_next_token();
term();
}
}
void term(){
factor();
while(token==star){
printf(star\n);
get_next_token();
factor();
}
}
void factor(){
if(token==number)
get_next_token();
else if(token == lp) {
get_next_token();
expr();
if(token == rp)
get_next_token();
else
error();
}
else error();
}
void error(){
printf(잘못된 수식 입니다.\n);
}