在C中使用qsort()并跳过特定的字符集 定义alen(x)((sizeof x)/(sizeof*x)) 类型定义结构{ char*电影名称; 整数分钟; 浮动价格; }DVD; int main() { DVD电影[10]={ {《黑暗骑士》,153,14.99}, {《钢铁侠》,126,12.99}, {《蝙蝠侠开始》,141,9.99}, {《蝙蝠侠归来》,126,9.99}, {“忍者神龟”,87,7.99}, {“不可思议的绿巨人”,114,12.99}, {“X战警”,104,12.99}, {“蜘蛛侠”,121,14.99}, {“神奇四侠”,106,14.99}, {“美国队长”,124,19.99}, }; qsort(电影、alen(电影)、sizeof*电影、tcomp); printf(“已排序的电影:\n”); for(int i=0;i电影标题,((DVD*)b)->电影标题); }

在C中使用qsort()并跳过特定的字符集 定义alen(x)((sizeof x)/(sizeof*x)) 类型定义结构{ char*电影名称; 整数分钟; 浮动价格; }DVD; int main() { DVD电影[10]={ {《黑暗骑士》,153,14.99}, {《钢铁侠》,126,12.99}, {《蝙蝠侠开始》,141,9.99}, {《蝙蝠侠归来》,126,9.99}, {“忍者神龟”,87,7.99}, {“不可思议的绿巨人”,114,12.99}, {“X战警”,104,12.99}, {“蜘蛛侠”,121,14.99}, {“神奇四侠”,106,14.99}, {“美国队长”,124,19.99}, }; qsort(电影、alen(电影)、sizeof*电影、tcomp); printf(“已排序的电影:\n”); for(int i=0;i电影标题,((DVD*)b)->电影标题); },c,qsort,C,Qsort,在使用函数tcomp和qsort对电影标题进行排序时,我需要忘记电影标题中的“A”、“An”和“the”。有人能帮我弄清楚如何优雅地处理这个问题吗 如果您只关心前缀词,那么在进行比较之前,请调整指针 #define alen(x) ((sizeof x) / (sizeof *x)) typedef struct { char *movie_title; int minutes; float price; } DVD; int main() { DVD mov

在使用函数tcomp和qsort对电影标题进行排序时,我需要忘记电影标题中的“A”、“An”和“the”。有人能帮我弄清楚如何优雅地处理这个问题吗

如果您只关心前缀词,那么在进行比较之前,请调整指针

#define alen(x) ((sizeof x) / (sizeof *x))

typedef struct {
    char *movie_title;
    int minutes;
    float price;
} DVD;

int
main()
{
    DVD movies[10] = {
        { "The Dark Knight", 153, 14.99},
        { "Iron Man", 126, 12.99},
        { "Batman Begins", 141, 9.99},
        { "Batman Returns", 126, 9.99},
        { "Teenage Mutant Ninja Turtles", 87, 7.99},
        { "The Incredible Hulk", 114, 12.99},
        { "X-Men", 104, 12.99},
        { "Spider-Man", 121, 14.99},
        { "Fantastic Four", 106, 14.99},
        { "Captain America", 124, 19.99},
    };

    qsort(movies, alen(movies), sizeof *movies, tcomp);

    printf("Movies sorted: \n");
    for (int i = 0; i < alen(movies); i++)
        printf("%s\n", movies[i].movie_title);
}

int
tcomp (const void * a, const void * b)
{
    return strcmp(((DVD*)a)->movie_title,((DVD*)b)->movie_title);
}

如果您只关心前缀词,那么在进行比较之前,请调整指针

#define alen(x) ((sizeof x) / (sizeof *x))

typedef struct {
    char *movie_title;
    int minutes;
    float price;
} DVD;

int
main()
{
    DVD movies[10] = {
        { "The Dark Knight", 153, 14.99},
        { "Iron Man", 126, 12.99},
        { "Batman Begins", 141, 9.99},
        { "Batman Returns", 126, 9.99},
        { "Teenage Mutant Ninja Turtles", 87, 7.99},
        { "The Incredible Hulk", 114, 12.99},
        { "X-Men", 104, 12.99},
        { "Spider-Man", 121, 14.99},
        { "Fantastic Four", 106, 14.99},
        { "Captain America", 124, 19.99},
    };

    qsort(movies, alen(movies), sizeof *movies, tcomp);

    printf("Movies sorted: \n");
    for (int i = 0; i < alen(movies); i++)
        printf("%s\n", movies[i].movie_title);
}

int
tcomp (const void * a, const void * b)
{
    return strcmp(((DVD*)a)->movie_title,((DVD*)b)->movie_title);
}

编写一个函数,在比较之前从名称的临时副本中删除想要忽略的单词

然后简单地比较处理过的名称


我想这应该足够简单,可以通过按空格分割来实现这样一个函数,然后在将单词放入输出字符串之前确保该单词是“有效单词”。

编写一个函数,在比较之前从名称的临时副本中删除想要忽略的单词

然后简单地比较处理过的名称


我想这应该足够简单,可以通过按空格分割来实现这样一个函数,然后在将单词放入输出字符串之前确保该单词是“有效单词”。

在比较之前去掉…在比较之前去掉…它说函数的隐式声明“strnicmp”在C99中无效?我包括了标题,你知道为什么吗?!反正都是用了strcmp!谢谢哦,对了,对不起,在这种情况下,首先将其转换为小写,否则它将区分大小写。它说函数“strnicmp”的隐式声明在C99中无效?我包括了标题,你知道为什么吗?!反正都是用了strcmp!谢谢哦,对了,对不起,在这种情况下,请先将其转换为小写,否则它将区分大小写