用C语言编程:将数组st中前半部分连续的“*”移到st 的尾部,其它位置上的“*”不动。

来源:百度知道 编辑:UC知道 时间:2024/05/29 06:00:59
用C语言编程:输入一字符串存入数组st中,然后将st中前半部分连续的“*”移到st 的尾部,其它位置上的“*”不动。

// test_abcd 是让人先数好‘*’的个数,这样并没有解决问题
// 而且一个字符一个字符移动也不好

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

// 先数'*'再移动比较好
void f(char *st)
{
int i;
int len = strlen(st);
for (i = 0; st[i] == '*'; ++i) // 数'*'
;
strcpy(st, st + i); // 将后一部分移动到前面
// 以下复制前面连续的'*'
i = len - i;
while (i < len) st[i++] = '*';
st[i] = '\0';
}

main()
{
char st[] = "**********This is a *** test.";
printf("%s\n",st);
f(st);
printf("%s\n",st);
}

main()
{
char st[11]={'*','*','*','a','b','c','d','*','e','f','\0'};
char t;
int i,j;
while(st[0]=='*')
{
t=st[0];
for(i=0;i<9;i++)
st[i]=st[i+1];
st[9]=t;
}