编写程序对用户输入的一系列单词排序

假设每个单词不超过20个字符,当用户输入空单词(即敲回车键而没有录入任何单词)时停止读取,把每个单词存储在一个动态分配的字符串中,用一个指针数组来跟踪这些字符串,读完所有单词后对数组排序。
我试着编了一个没用动态分配的程序,但问题有点多,希望会的大佬帮忙改改或者帮忙写一个供我参考一下,谢谢
#include
#include
#include
#define M 50
#define N 20
int read_line(char str[],int n)
{
int ch,i=0;
while((ch=getchar())!='\n'){
while(ch==' ')ch=getchar();
if(i<n&&ch!='\n')
str[i++]=ch;
}
str[i]='\0';
return i;
}
void quicksort(char *str[],int n)
{
int i=1,t;
char max[N];
strcpy(max,str[0]);
if(n<=1)return;
for(;i<n;i++){
if(strcmp(str[i],max)){
strcpy(max,str[i]);
t=i;
}
if(strcmp(str[i],max)==0)
t=0;
}
strcpy(str[t],str[n-1]);
strcpy(str[n-1],max);
quicksort(str,n-1);
}
int main(void)
{
int i,n=0;
char *str[N];
for(i=0;n<M;i++,n++)
{printf("Enter word:");
if(read_line(str[n],N)==0)
break;
}
quicksort(str,n);
for(i=0;i<n;i++)
printf("%s",str[i]);
return 0;
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐