一个指针问题
- C/C++ code
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;}[解决办法]
1、strlen那里应该没有问题吧。
2、下面这段代码貌似有问题的说,你到底想实现什么功能?
- C/C++ code
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的值未知