未考虑到\n也是ASCII字符! (0-255), 因此需要使用fgetc, getchar,等返回值为int的函数
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 200
void sort(char array[], int n)
{
char temp = 0;
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(array[k] > array[j])
k=j;
}
if(k!=i)
{
temp=array[i];
array[i]=array[k];
array[k]=temp;
}
}
}
int isAlphabet(char c)
{
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
int main()
{
char buf[MAX_SIZE];
char abuf[MAX_SIZE];
int i = 0;
int j = 0;
int num = 0;
int il = 0;
fgets(buf,MAX_SIZE,stdin);
il = strlen(buf);
if(il > 101)
{
printf("il:%d\n", il);
return 0;
}
buf[il-1]=0; //trailing \n
//printf("strlen:%d, buf:%s\n", strlen(buf), buf);
j = 0;
for(i=0; i<il-1;i++)
{
if(isAlphabet(buf[i]))
{
abuf[j++] = buf[i];
buf[i] = 0;
}
}
abuf[j] = 0;
//printf("strlen:%d, abuf:%s\n", strlen(abuf), abuf);
num = j ;
sort(abuf, num);
//printf("sorted: strlen:%d, abuf:%s\n", strlen(abuf), abuf);
j = 0;
for(i=0; i<il-1; i++)
{
if(buf[i] == 0)
{
buf[i] = abuf[j++];
}
}
//printf("sorted: strlen:%d, buf:%s\n", strlen(buf), buf);
printf("%s\n", buf);
return 0;
}