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