to noodle2003:你的问题的解决方法:

来源:互联网  时间:2016/8/12 13:05:18

关于网友提出的“ to noodle2003:你的问题的解决方法:”问题疑问,本网通过在网上对“ to noodle2003:你的问题的解决方法:”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: to noodle2003:你的问题的解决方法:
描述:

你这个程序有一些致命的错误,请看程序中的注释:
 ... ...
int *lookup(char p[],char *q[16] )     // 这里应该返回 "char *"
{int m;
char *r;
  for(m=0;m<=15;m++)
  {if(strcmp(p ,q[m])==0)r=q[m];
    }
    *r="0";           // 这句话编译就不能通过,你用的是什么编译器?居然不报错?
    return r;}
main()
{char *c;
char a[6]="main";
strcpy(c,lookup(a,key));  // 变量 c未初始化,这条语句足以导致程序崩溃
if(strcmp(c,"0")==0)printf("found!");   // 应该输出 not found吧?
else printf("%s",c);
getch();
}
我改了一下,变成下面的样子,应该可以了:
#include 
#include 
#include 
char *key[16]={"int","main","while",
             "char","long","short",
             "float","struct","union",
             "while","if","printf","scanf",
             "for","else","switch"};
char *lookup(char p[],char *q[16] )
{
   int m;
   char *r;
   r="0";
   for(m=0;m<=15;m++)
   {
      if (strcmp(p ,q[m])==0)
         r=q[m];
   }
   return r;
}
void main()
{
   char c[16];
   char a[6]="main";
   strcpy(c,lookup(a,key));
   if (strcmp(c,"0")==0)
      printf("not found!");
   else
      printf("%s",c);
   getch();
}

上一篇看一个简单的程序,谢谢了!
下一篇[转贴] C 语言难点分析整理
明星图片
相关文章
《 to noodle2003:你的问题的解决方法:》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)