看看这个小程序有问题没?删除字符串里指定字符
#include <string.h>
#include <stdio.h>
char *fun(char*s,char c)
{
int i;
char *p=s;
char *ppPtr=p;
for (; *s!='\0'; s++)
{
if(*s!=c)
*p++=*s;
}
*p='\0';
return ppPtr;
}
int main()
{
char szTemp[20]="Hello,world";
char *pStr;
pStr=szTemp;
printf("Init str=%s\n",pStr);
pStr= fun(szTemp, 'H');
printf("str = %s\n",pStr);
return 0;
}
昨晚去面试,要写一个删除字符串里的指定字符,没做对。。
后来再网上找到这个,在VC6.0里面编译运行成功。。。
但是有点疑问:
在函数 fun中
定义指针:char *ppPtr=p;
在函数末尾居然用retur返回了这个指针?
个人觉得这个指针变量分配内存在践区,在函数运行完的时候内存应该被销毁了,这里用return 返回指针应该有问题吧?
请大家讨论和指点下!