1. ASCII 包括0-255, 用fgets不好使了,只能用EOF或者超过100个字符判断了, EOF用CTRL D产生在bash下
2. 用getchar()获取标准输入的ascii字符, 放在int 数组里,为方便存储getchar()的返回值为int, EOF或者error的时候都会返回一个负数
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 200
void sort(int array[], int n)
{
int 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(int c)
{
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
int main()
{
int input[MAX_SIZE];
int ainput[MAX_SIZE];
int i = 0;
int j = 0;
int num = 0;
int il = 0;
for(i=0; i<100 && (input[i]=getchar())>=0; i++)
{
}
//printf("i:%d\n",i);
il = i;
/*
for(i=0;i<100&& input[i]>=0;i ++)
{
printf("%d,%d\n",i, input[i]);
}
*/
j = 0;
for(i=0; i<il;i++)
{
if(isAlphabet(input[i]))
{
ainput[j++] = input[i];
input[i] = 256;
}
}
num = j ;
sort(ainput, num);
j = 0;
for(i=0; i<il; i++)
{
if(input[i] == 256)
{
input[i] = ainput[j++];
}
}
for(i=0;i<il;i++)
{
printf("%c", (char)input[i]);
}
return 0;
}