关于网友提出的“ 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();
}