[問題]有關解析一個計算式字串
這個作業是希望我們能夠解析如下的這個字串
char *str="((0.12 +.734)* abc/(3.78-21*v1)-123/v2^2)* 24.34 -1234";
將其分解為數字 變數名稱 左右括弧和運算符號(+-*/)
並以數字,字串及字元的格式列印出來
EX: number 0.12
operator +
right parenthsis (
希望印出來大概能像上面的那種格式
這是小弟自己寫的程式
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
char c ;
char *expr="str";
char inp[128];
int n;
double f;
char *str="((0.12 +.734)* abc/(3.78-21*v1)-123/v2^2)* 24.34 -1234";
printf("Analyse string\"%s\"\n",str);
while (c= *expr)
{
if(isalpha(c))
{
sscanf(expr,"[a-Z-A-Z 0.9]%n",inp,&n);
printf("Variable\t\t\t%s\n",inp);
expr+=n;
continue;
}
if (isdigit(c))
{
sscanf(expr,"%f%n",&f,&n);
printf("Number\t\t\t%f\n",f);
expr+=n;
continue;
}
}
switch(c)
{ case ' ':
case '\t':
case '\v':
case '\n':
case '\f':
break;
case '(':
printf("left parenthesis\t%c\n",c);
break;
case ')':
printf("right parenthesis\t\t%c\n",c);
break;
case '+':
case '-':
case '*':
case '/':
case '^':
printf("operator\t\t%c,n",c);
break;
}
expr++;
system("pause");
}
但每次下去跑的時候都會出現錯誤
而且都只是把我要印的那行字串列印出來後devc++會當掉
沒有辦法印出我希望的格式
可以請大家幫我看看是否有哪裡寫錯需要修正嗎
非常感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.169.97.193
→
08/07 15:01, , 1F
08/07 15:01, 1F
→
08/07 15:01, , 2F
08/07 15:01, 2F
→
08/07 15:53, , 3F
08/07 15:53, 3F
→
08/07 15:54, , 4F
08/07 15:54, 4F
→
08/07 17:57, , 5F
08/07 17:57, 5F
→
08/07 17:58, , 6F
08/07 17:58, 6F
→
08/07 18:14, , 7F
08/07 18:14, 7F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章