将字符串中的*号全部删除,但前导和尾部的*号不删除

规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是将字符串中的*号全部删除,前导和尾部的*号不删除。

例如输入字符串“******abcAf**G**”,输出为“******abcAfG**”。

#include <stdio.h>
void  fun(char *a)
{
	char * pos = a, * begin = a;
	int endcount = 0;
	
	while(*pos != '\0')	// 到最后
		pos++;
	pos--;
	while(*pos == '*')	// 从后往前数到第一个不为 '*' 的地方
	{
		endcount++;
		pos--;
	}

	/* 指针a指向字符串中第一个非 * 的开始 */
	while(*a == '*')	// 跳过开始的 '*'
		a++;

	while(*a != '\0')
	{
		if(*a == '*')
		{
			pos = a;
			while(*pos != '\0')
			{
				*pos = *(pos+1);
				pos++;
			}

		}
		else
		{
			a++;
		}
	}

	while(endcount > 0)
	{
		*a = '*';
		a++;
		endcount--;
	}
	*a = '\0';
}
main()
{
	while(1)
	{
		char s[81];
		printf("Enter a string:\n");
		gets(s);
		fun(s);
		printf("The string after deleted:\n");
		puts(s);
	}
}


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

搜索
网站分类
控制面板
您好,欢迎到访网站!
  查看权限
最新留言
  • 订阅本站的 RSS 2.0 新闻聚合订阅本站RSS

Powered By Z-BlogPHP 1.6.6 Valyria

code snippet library 代码片段库 - 张小弟之家 | 后台管理