char mark_name;
int state;
int num;
int line;
struct Sign *link;
struct Word *next;
};
FILE *fp1;//檔案指針
int row=1,line[10000],Lin[300],w_num;//字元行變量、字元行、單詞所在行、字元數char buffer[10000];//字元串緩沖區
Stack *MarkPush(Stack *ip,char mark,int I_i)//壓棧
{
Stack *s;
s=(Stack *)malloc(sizeof(Stack));
s->name=mark;
s->num=I_i;
s->next=ip;
ip=s;
return ip;
}
void MarkPop(Stack *ip)//出棧
{
Stack *q;
char name;
name=ip->name;
q=ip->next;
if(ip->next!=NULL)
{
ip->name=ip->next->name;
ip->num=ip->next->num;
ip->next=ip->next->next;
free(q);
}
}
int judge(char ch)// 接收ch判斷字元,變量flag傳回字元類别
{
int flag;
if(ch=='!'||ch=='$'||ch=='&'||ch=='*'||ch=='('||ch==')'||ch=='-'||ch=='_'||
ch=='+'||ch=='='||ch=='|'||ch=='{'||ch=='}'||ch=='['||ch==']'||ch==';'||
ch==':'||ch=='"'||ch==''||ch=='.'||ch=='/'||ch=='\'')
flag=1;
else if('0'<=ch&&ch<='9')