题解 | #字符串排序#

字符串排序

https://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723

本来想用二维字符指针初始化,结果发现总是内存超限。后来考虑用动态数组,即输入多少申请多大内存的空间存储字符串。
1.定义char** dic,动态申请内存大小n*100*sizeof(char);
2.定义一个缓冲字符数组,大小为100;
3.每读取一个字符串存入temp中,动态申请内存大小sizeof(temp);
4.将缓冲字符数组的内容拷贝到dic[i]中,同时将temp数组归零。
5.使用qsort函数排序。
6.比较函数的形参传入为char**。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmp_word(const void**a,const void**b)
{
    return strcmp(*(char**)a, *(char**)b);   
}
int main()
{
    int n;
    scanf("%d",&n);
    char** dic;
    dic=(char**)malloc(n*100*sizeof(char));
    char temp[100]={0};
    int i=0;
    while(scanf("%s\n",temp)!=EOF)
    {
        if(i==n) break;
        dic[i]=(char*)malloc(sizeof(temp));
        strcpy(dic[i],temp);
        memset(temp,'0',99);
        i++;
    }
    qsort(dic,n,sizeof(char*),cmp_word);
    for(i=0;i<n;i++)
    printf("%s\n",dic[i]);
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 17:37
点赞 评论 收藏
分享
VirtualBoo...:都去逗他了?
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务