C语言指针的问题,求大神!!

void deleteSubString(char *s,char c,int len)
{
int i; int flag=0; char temp;
char *p;p=s; int tep; for(i=0;(temp=(*p++)!='\0';i++){
printf("temp=%c\n",temp);
if (flag) break;
else if(temp==c){ printf("found\n"); flag=1;}}
printf("flag=%d\n%s\n",flag,s+i);
printf("%s\n",s);
printf("%d",tep);
if(flag){
tep=strlen(s+i); for(;*(s+i)!='\0'&&tep>0;i++) *(s+i)=*(s+i+len); tep--; }}
这个 *(s+i)=*(s+i+len);为什么错了!求解释啊

最后一句的tep--;应该是在for循环里面不然tep就不会变了。
看程序的意思是删除字符串s里面c开头长度为len的子串。你写的有些复杂了
void deleteSubString(char *s,char c,int len)
{
int flag=0;
int s_len=0;
char *p=s;

for(*p;*p!='\0';p++)
{
if(*p==c)
{
printf("found\n");
flag=1;
break;
}
}
printf("flag=%d str=%s\n",flag,p);

if(flag)
{
s_len=strlen(p);
if(s_len<len)
{
printf("error string is not enough\n");

}
else
{
strcpy(p,p+len);
}
}

printf("string=%s\n",s);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-08
for(i=0;(temp=(*p++)!='\0';i++)

是这个错了吧。追问

好像是的,怎么改

追答

for(i=0;(temp=(*p++))!='\0';i++)

第2个回答  2015-01-09
应该是内存越界了
第3个回答  2015-01-09
这地方内存越界了。追问

怎么改啊

相似回答