首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

正在编词法分析程序,上面是部分代码,出现了点有关问题。向高手求帮助。

2012-11-08 
正在编词法分析程序,下面是部分代码,出现了点问题。向高手求帮助。。。下面的是部分代码,问题是,判断保留字的

正在编词法分析程序,下面是部分代码,出现了点问题。向高手求帮助。。。
下面的是部分代码,问题是,判断保留字的时候,只能识别include,别的例如int char main等识别不了。。求帮助

#include<stdio.h> 
#include <string.h>
int main()
{
 char blzpd(char *b);
 char ch;
 int i=0,j;
 char a[50];
 char *blz[7]={"int","char","include","void","main","if","else"};
 printf("请输入并且以#结束:"); 
 ch=' ';
 while(ch==' ') //跳过空格 
 {//printf("出现空格\n");
 //printf(" ");
  ch=getchar();
 
  while(ch!=' ') //下面的while跳出后,输出连续的字符串 
  {
  while(ch!=' ') //得到连续的字符串,遇到空格跳出 
  {
  a[i]=ch;
  ch=getchar();
  i++;
  if(ch=='#')
  break;
  }
  //for(j=0;j<i;j++)
  //printf("%c",a[j]);
  blzpd(a); //调用函数blzpd(),判断是否是保留字
  //printf("\n");
  i=0;
  if(ch=='#')
  break;
  }
 } 
// retrun(0);
printf("运行没问题\n");

char blzpd(char *b)
 { int m;
  char *blz[7]={"int","char","include","void","main","if","else"};
  for(m=0;m<7;m++)
  if(strcmp(b,blz[m])==0)
  {printf("保留字%s 编码01\n",b);
  break;
  }
  else 
  //continue;
  printf("不同");
 }

[解决办法]

看了代码应该没问题的,不过要有点修改

a[i]=0;//增加这个代码,否则a会没有正确的结束符.比如include之后如果检测到int,则此处变成intlude
blzpd(a); //调用函数blzpd(),判断是否是保留字

[解决办法]

探讨
 ch=' ';
 while(ch==' ') //跳过空格 
 {//printf("出现空格\n");
 //printf(" ");
ch=getchar();
 
while(ch!=' ') //下面的while跳出后,输出连续的字符串 
{
while(ch!=' ') //得到连续的字符串,遇到空格跳出 
{
a[i]=ch;
ch=getchar();
i++;
if(ch=='#')
break;
}
//for(j=0;j<i;j++)
//printf("%c",a[j]);
blzpd(a); //调用函数blzpd(),判断是否是保留字
//printf("\n");
i=0;
if(ch=='#')
break;
}
 }

热点排行