C實(shí)例編程(刪除子字符串的程序)

字號:

一個(gè)刪除子字符串的程序,沒有使用C的相關(guān)字符串庫函數(shù):
    #include
    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;
    }