急求C语言高手!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/17 22:01:31
输入一字符串(这个字符串包括有一些“*”)存入数组st中,然后将st中前半部分连续(注意是前半部分、连续的)的“*”移到st 的尾部,其它位置上的“*”不动。
用C处理!!!
(注:请用指针方法处理,也别用什么没见过的库函数哦)
流星寒云的想法对,就是一定是在最前面的、连续的*才移到最后面,一楼同志不对的哈……

//为什么不用库函数呢?标准库函数要尽可能多地使用。
//不过下面的代码只用到了最常用的strlen()和printf()

#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);
}

不明白你的意思

是不是这个:

***haha**
haha*****

#include <stdio.h>

void swap(char* lhs, char* rhs)
{
char temp = *lhs;
*lhs = *rhs;
*rhs = temp;
}

void reverse(char* beg, char* end)
{
while(beg < end)
swap(beg++, --end