C程序编译问题···太难做了的说····

来源:百度知道 编辑:UC知道 时间:2024/09/19 16:11:49
问题如下:
编写程序,该程序的功能是将字符串中所有字母字符按升序排列后,移到串的首部;其他字符按升序排列后,移到串的尾部。程序编写要求如下:
(1)编写函数 void fun(char *p),实现程序功能;
(2)在main函数中,由键盘输入一个字符串。
(3)在main函数中,输出移动后的字符串。
例如:键盘上输入:***C##b@A##a@B***,则输出结果:ABCab####******@@。
试了很久都没有做出来的说,希望有高手可以帮忙解答一下的说~

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

int compare(const void *a,const void *b)
{
return (int)(*(char*)a)-(int)(*(char*)b);
}

void fun(char *p)
{
int n,i,j;
n=strlen(p);
for (i=-1,j=0;j<n;j++)
if (isalpha(p[j]))
{
char temp;
i++;
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
qsort(p,i+1,sizeof(char),compare);
qsort(p+i+1,n-i-1,sizeof(char),compare);
}

main()
{
char str[1000];
scanf("%s",str);
fun(str);
puts(str);
}

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

#define MAX_INPUT_COUNT 255

inline int exchangeChars(char *pSrc, char *pDest)
{
if (pSrc == NULL
|| pDest == NULL) {
return -1; // Error
}

char chTmp = 0;