删除字符串中的子串,不允许用string库函数,也不允许使用下标,我感觉我思路没问题,但是运行结果就是不对,找不到问题在哪

#include <stdio.h>

int del_substr(char *str, char const substr);
int cal_length(char
str);

int cal_length(char*str){
int length=0;
for(;*str!='\0';str++){
length++;
}
return length;
}

int del_substr(char *str, char const *substr){
char *std=str;
char const *substd=substr;
char *temp;
while(*substd!='\0'&&*std!='\0'){
if(*std==*substd) {
substd++;
std++;
}
else {
std++;
substd=substr;
}
}
if(*std='\0'){
return 0;
}
int length1=cal_length(substr);
temp=std-length1;
while(*std!='\0'){
*temp=*std;
std++;
temp++;
}
while(temp<std){
*temp='\0';
temp++;
}
return 1;
}

int main(){
char str[20];
char const substr[10];
scanf("%s",str);
scanf("%s",substr);
int t;
t=del_substr(str,substr);
if(t){
printf("%s",str);
}

return 0;
}

参考: