簡體   English   中英

在包含字符串的結構上使用qsort

[英]Using qsort on a struct that contains strings

我想在程序中使用qsort()函數。

我想按字符串對該結構進行排序。

我只是做了指針。

我搜索了互聯網,但沒有得到。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmpstr(const void* a, const void* b)

{
    const char* aa = *(const char**)a;
    const char* bb = *(const char**)b;
    return strcmp(aa,bb);
}

typedef struct
{   int x;
    char a[10];

}alex;
int main()
{
    alex vd[10];
int i;
//vd=malloc(sizeof(struct alex)*2);
strcpy(vd[0].a,"dinamitte");
strcpy(vd[1].a,"alex");
printf("Before : \n");
for(i=0;i<=1;i++)
    printf("%s ",vd[i].a);

//qsort(v,1,sizeof (v) ,myCompare);
int n=2;
//qsort(v, 2, sizeof (char *), cstring_cmp);
qsort(vd,n  ,sizeof(alex),cmpstr);
//qsort()
printf("\nAfter : \n");
for(i=0;i<=1;i++)
    printf("%s \n",vd[i]);
    return 0;
}

編譯后,它會在屏幕上寫“ dinamitte”和“ alex”,然后是一些奇怪的字符。

像這樣修復:

typedef struct {
    int x;
    char a[10];
} alex;

int cmpstr(const void* a, const void* b){
    const alex *aa = a;
    const alex *bb = b;
    return strcmp(aa->a, bb->a);
}

還要printf("%s \\n",vd[i]); 拼寫為printf("%s \\n",vd[i].a);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM