#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int GetWords(char *sentence, char *words[]);
void SortStrings(const char *strs[], int count);
int main()
{
char str[200];
int nWords = 0;
char *words[20];
int i;
printf("input a string: ");
gets(str);
nWords = GetWords(str, words);
SortStrings(words, nWords);
puts("output:");
for(i=0; i<nWords; i++)
puts(words[i]);
system("pause");
return 0;
}
int GetWords(char *str, char *words[])
{
/******start******/
int i, cnt = 0;
char ch = ' ';
for (i = 0; str[i] != '\0'; i++)
{
if (ch == ' ' && str[i] != ' ')
{
words[cnt] = str+i;
ch = str[i];
cnt++;
}
else if (str[i] == ' ')
{
ch = str[i];
str[i] = '\0';
}
else if (str[i] == '.')
{
str[i] = '\0';
break;
}
}
return cnt;
/******end******/
}
void SortStrings(const char *strs[], int count)
{
/******start******/
int i, j;
const char *tmp;
for (i = 0; i < count; i++)
{
for (j = 0; j < count - i - 1; j++)
{
if (strcmp(strs[j], strs[j+1]) > 0)
{
tmp=strs[j];
strs[j]=strs[j+1];
strs[j+1]=tmp;
}
}
}
/******end******/
}
36行,为什么一定要有ch != ' '这一条件?