字符串指针

题目:写一个C程序处理带有删除符的字符串(例如删除符是*)。比如"abc***def**g",处理后是"dg",“a**b*cdef*g”处理后是"cdeg",
"abcd**g**"处理后是“a”,其它的都被删除了。函数声明为

int process(char *s); s为可以更改的内存,请在原来内存进行操作不要分配新的内存。

#include <stdio.h>
#include <string.h>

int offset(char *ab, int slen)
{
    int len = 0;
    int i;
    int ret_len;

    for (i = 0; i < slen; i++)
    {
        if (ab[i] == '*')
        {
            for (len=0; len< (slen - i); len++)
            {
                if (ab[i+len] != '*')
                {
                    break;
                }
            }

            for (; i< slen -len; i++)
            {
                ab[i] = ab[i+len];
            }

            return slen - len;
        }
    }

    return -1;
}

int process(char *ab)
{
    int i;
    int new_len = 0;
    int byd_len;
    int all_len = strlen(ab);

    new_len = all_len;
    while (new_len > 0)
    {
        byd_len = new_len;
        new_len = offset(ab, new_len);
    }
    
    for (i = byd_len; i < all_len; i++)
    {
        ab[i] = '\0';
    }

    printf("%s\n", ab);

    return 0;
}
    
int main(int argc, char *argv[])
{
    process(argv[1]);
    return 0;
}                        /*add by [email protected]  2018.07.09*/


猜你喜欢

转载自blog.csdn.net/AsiaWong/article/details/80977003