一个指针问题
int del_srubstr(char *str,char const *substr){ //char const temp; char *p,*temp; int n; p=str; n=strlen(substr);//为什么我用gdb跟的时候,n的值$1 = 10922 temp=(char *)malloc(n+1); memset(temp,0x00,n+1); while(p) { memcpy(temp,str,n); if (strcmp(temp,substr)==0) { p+=n; str=p; return TRUE; } } return FALSE;}int main(){ char *stra="ABCDEF"; char *strb="XRCQEF"; char *strc="CD"; //char *s; //s=find_char(stra,strb); //printf("%c",*s); del_srubstr(stra,strc); printf("%s",stra); return 0;}while(p) { //memcpy(temp,str,n); // 应该是这样的吧 memcpy(temp, p, n); if (strcmp(temp,substr)==0) { p+=n; str=p; return TRUE; } // 添加代码 else { ++p; memset(temp,0x00,n+1); } }
[解决办法]
n=strlen(substr);//这条语句没执行前,n的值未知