将几个单词存入一个动态分配字符串中并排序输出

img


如何将这些单词存入一个动态分配的字符串中并通过任意排序方式排序输出

一个实现:


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void){
    
    char * str [100];  //创建一个含100个字符指针的数组,可以存储100个字符串的地址 
    int i=0;
    
    str[i] = (char * ) malloc(sizeof(char)*21);    //分配动态内存 
    printf("Enter word:");
//    scanf("%s",str[i]);
    gets(str[i]);  //获取一个字符串输入 
    
    while(str[i]!=NULL&&str[i][0]!='\0'){  //如果输入是一个空字符串  则获取下一个字符串输入存储到字符指针数组 
        i++;
        str[i] = (char * ) malloc(sizeof(char)*21);
        printf("Enter word:");
        gets(str[i]);
    //    scanf("%s",str[i]);
            
    }    
    
//    int k,p;
//    printf("origin str: \n"); 
//    for(k=0;k<i;k++){
//        printf("%s\n",str[k]);
//    }
    

    
    char temp[21];
    //遍历数组中的指向的字符串,按指向的字符串的ASCII码大小排序这个数组 
    for(k=0;k<i-1;k++){    
        for(p=k;p<i;p++){
            
            if(strcmp(str[k],str[p])>0){
                strcpy(temp,str[k]);
                strcpy(str[k],str[p]);
                strcpy(str[p],temp) ;
            }        
                
        }
        
    } 
    
    //打印结果 
    printf("In sorted order: "); 
    for(k=0;k<i;k++){
        printf("%s ",str[k]);
    }
    
    return 0;
}