提取出英文句子所有单词存到一个单词数组中排序函数对字符串数组进行升序排序在主函数中输出各单词

#include <stdio.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]);

return 0;
}

int GetWords(char *str, char *words[])
{
/******start******/
int n,i,j=0;
n=strlen(str);
for(i=0;i<n;i++)
{
if(str[i]==' '||str[i]=='.')
{
words[j]=&str[i];
str[i]='\0';
j++;
}
}
str[i]='\0';
return j;

/******end******/
}

void SortStrings(const char *strs[], int count)
{
/******start******/
char const *temp;
int i,j;
for(i=0;i<count;i++)
{
for(j=i;j<count;j++)
{
if(strcmp(strs[j],strs[j+1])>0)
{
temp=strs[j];
strs[j]=strs[j+1];
strs[j+1]=temp;
}
}
}

/******end******/
}
错误在/***********start***********/ /*********end******/之间,,拜托到底哪里有问题

参考……
int GetWords(char *str, char *words[]){
/******start******/
char *p,n;
for(p=str,n=0;*p;p++)
if(*p!=' ' && (*(p-1)==' ' || p==str)){
words[n++]=p;
if(p!=str) *(p-1)='\0';
}
*(p-1)='\0';
return n;
/******end******/
}
void SortStrings(/*const*/ char *strs[], int count){//不能用const,用了就不能动了,咋排序?
/******start******/
char *p,i,j,k;
for(i=0;i<count;i++){
for(k=i,j=k+1;j<count;j++)
if(stricmp(strs[k],strs[j])>0) k=j;
if(k!=i){
p=strs[k];
strs[k]=strs[i];
strs[i]=p;
}
}
/******end******/
}
这代码不区分大小写。若希望区分大小写,将stricmp改成strcmp即可。追问

const,,那个是题的代码是不能改的,已经解决不过还是谢谢啦!

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网