自己做了个自动机的程序 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);
}
}
C语言程序问题 高手帮帮忙
答案:1 悬赏:70 手机版
解决时间 2021-05-13 22:57
- 提问者网友:几叶到寒
- 2021-05-13 17:39
最佳答案
- 五星知识达人网友:千杯敬自由
- 2021-05-13 18:57
你好哦楼主~
很高兴看到你的问题。
但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。
可能是你问的问题有些专业了,没人会。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也会比较热心,能快点帮你解决问题。
希望我的回答能够帮到你!
祝你好运。。
很高兴看到你的问题。
但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。
可能是你问的问题有些专业了,没人会。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也会比较热心,能快点帮你解决问题。
希望我的回答能够帮到你!
祝你好运。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯