今天去华为面试,被拒。
有一道题觉得很冤枉,现在求助强人帮忙解答
下面这个程序哪里错了:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int getmal(char **p,unsigned long len)
{
*p=(char *)malloc(len+1);
return (p?1:0);
}
main()
{
int len=100;
char *p=0;
char *str="helloworld!";
int i;
i=getmal(&p,len);
sprintf(p,"%s",str);
printf("%s\n",p);
}
面试官说里面有不止两个错误,让我找出来两个就可以,结果我找了近十分钟也没有找出来一个错误!!!
真正的原题是这样的:
int getmal(char **p,unsigned long len)
{
*p=(char *)malloc(len+1);
return (p?TRUE:FALSE);
}
main()
{
int len=100;
char *p=0;
char *str="helloworld!";
getmal(&p,len);
sprintf(p,"%s",str);
}
我加上头文件和最后的printf只是为了调试方便,如果这个题的正确答案是没有引入头文件和没有定义TRUE和FALSE这两个全局变量,就当我瞎了眼,找工作找错了地方!