| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 269 人关注过本帖
标题:C语言问题高手进
只看楼主 加入收藏
wjcwjcwjc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-10-25
收藏
 问题点数:0 回复次数:0 
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);
}
}
搜索更多相关主题的帖子: C语言 
2009-10-25 20:49
快速回复:C语言问题高手进
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021255 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved