题解 | #字符串排序#

字符串排序

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

字符串排序:C语言解法

#include <stdio.h>
//在这里进行变型,比较的数组是个指针数组,需要对指针指向的内容进行比较
int cmp(const char** a, const char** b){
    return strcmp((char *)*a, (char *)*b);
}
int main(){
    int num = 0;
    scanf("%d\n",&num);
    char** str = (char**)malloc(sizeof(char*) * (num));  //指向二维数组,一维数组指针的二级指针 
    char* p = (char*)malloc(sizeof(char) * (num) * 101);   //为二维数组的每个元素分配空间
    memset(p, sizeof(char) * (num) * 101, 0);
    for(int i=0; i<num; i++){
        scanf("%s\n",p+i*101);
        str[i] = p+i*101; //str[i] 是二维数组的一维数组指针  str[i]  = *(str + i)
    }
    //利用strcmp比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。
    //strcmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,
    //若差值不为0 则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。
    qsort(str, num, sizeof(char *), cmp);
    for(int j=0; j<num; j++){
        printf("%s\n",str[j]);
    }
}
全部评论
建议scanf输入把\n去掉
1 回复 分享
发布于 2022-05-06 10:46
mamory leak
点赞 回复 分享
发布于 2022-05-16 23:11
内存超过限制
点赞 回复 分享
发布于 2022-06-05 19:12
内存泄漏
点赞 回复 分享
发布于 2022-06-05 19:12
每个二维数组不要都申请满了 根据输入的字符串的大小去malloc就不会超过限制了 没有free 不好习惯。
点赞 回复 分享
发布于 2022-10-25 21:13 上海
codeblock运行不了,编译通过了
点赞 回复 分享
发布于 2022-12-18 23:12 陕西
调用排序库函数,这题意义全无
点赞 回复 分享
发布于 03-03 22:57 安徽

相关推荐

17 6 评论
分享
牛客网
牛客企业服务