请教一下为什么以下两个函数,第二个可以,第一个却不行。
//////第一个///////char * prefix(char* s1, char* s2)
{ char *P= (char*)malloc(sizeof(char) * 51);
int count=0;
for(int i=0;i<sizeof(s1);i++){
if(*(s1+i)==*(s2+i)){count++;
}
else{break;
}
}
for(int j=0;j<count;j++){
*(P+j)=*(s1+j);
}
*p='\0';
return p;
}
/////////////第二个////
char *prefix(char *s1, char *s2)
{
char *sb;
sb=(char*)malloc(sizeof(char) * 51);
char *p=sb;
while(*s1==*s2){
*p=*s1;
p++,s1++,s2++;
}
*p='\0';
return sb;
}