C语言问题高手进
自己做了个自动机的程序 C的 不过运行好像有问题 自己搞不清楚 高手给看看 尤其是调用 scanner 后 那个if(isdigit(ch))好像不起作用 比如 再C盘的123.txt里输入 .55. 还会识别为1 应该是错误 一步一步调试的时候 到if(isdigit(ch))遇到‘.’还会执行 实在是郁闷 拜托大家了#include<stdio.h>
#include<ctype.h>
#define N 1
#define ADD 2
#define DEC 3
#define MUL 4
#define DIV 5
#define L 6
#define R 7
char ch;
extern void out(int b)
{
printf("%d",b);
return;
}
extern report_error(void)
{
printf("Error!");
}
void Loop(FILE*fp)
{
ch=fgetc(fp);
if(isdigit(ch))
{
ch=fgetc(fp);
while(isdigit(ch))
{
ch=fgetc(fp);
}
out(N);
}
else if(ch=='+'|'-')
{
ch=fgetc(fp);
if(isdigit(ch))
{
ch=fgetc(fp);
while(isdigit(ch))
{
ch=fgetc(fp);
}
out(N);
}
else report_error();
}
else report_error();
}
void scanner(FILE*fp)
{
ch=fgetc(fp);
if(isdigit(ch))
{
ch=fgetc(fp);
while(isdigit(ch))
{
ch=fgetc(fp);
}
if(ch=='E')
{
Loop(fp);
}
else if(ch=='.')
{
ch=fgetc(fp);
while(isdigit(ch))
{
ch=fgetc(fp);
}
if(ch=='E')
{
Loop(fp);
}
else if(ch==EOF)
{
out(N);
}
}
else if(ch==EOF)
{
out(N);
}
else report_error();
}
else if(ch=='.')
{
ch=fgetc(fp);
if(isdigit(ch))
{
ch=fgetc(fp);
while(isdigit(ch))
{
ch=fgetc(fp);
}
if(ch=='E')
{
Loop(fp);
}
else if(ch==EOF)
{
out(N);
}
else report_error();
}
else report_error();
}
else report_error();
}
void main ()
{
FILE*fp;
fp=fopen("c:\\123.txt","r");
ch=fgetc(fp);
scanner(fp);
while(ch!=EOF)
{
scanner(fp);
}
}