一个删除子字符串的程序,没有使用C的相关字符串库函数:
- #include <stdio.h>
- int del_substr(char *str,char const *substr);
- int my_strlen(char const *str);
- int main(void)
- {
- char str[] = "abcdefgh";
- char *substr1 = "efg";
- char *substr2 = "fgr";
- printf("%d/t%s/n",del_substr(str,substr1),str);
- printf("%d/t%s/n",del_substr(str,substr2),str);
- return 0;
- }
- /**
- ** str -- 字符串
- ** substr -- 子字符串
- ** 若成功找到子字符串并删除之,返回1,若没找到则返回0
- **/
- int del_substr(char *str,char const *substr)
- {
- int i = 0;
- char *temp_str = str;
- char const *temp_substr = substr;
- int sub_len = my_strlen(substr);
- while(1)
- {
- if(*temp_str == *temp_substr)
- {
- temp_substr++;
- if(*temp_substr == '/0')
- {
- break;
- }
- }
- else
- {
- temp_substr = substr;
- }
- if(*temp_str == '/0')
- {
- return 0;
- }
- temp_str++;
- }
- char *preDel = temp_str - (sub_len - 1);
- while(*(preDel + (i+sub_len)) != '/0')
- {
- *(preDel + i) = *(preDel + (i+sub_len));
- i++;
- }
- *(preDel + i) = '/0';
- return 1;
- }
- int my_strlen(char const *str)
- {
- int len = 0;
- while( *str++ != '/0')
- {
- len++;
- }
- return len;
- }