| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 751 人关注过本帖
标题:用qsort对字符串结构体进行排序为什么会出错,大家帮忙修改下
只看楼主 加入收藏
张灏轩
Rank: 2
来 自:浙江湖州
等 级:论坛游民
帖 子:16
专家分:18
注 册:2011-10-2
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:1 
用qsort对字符串结构体进行排序为什么会出错,大家帮忙修改下
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct str
{
    char s[20];
}st[200];
int cmp(const void *a, const void *b)
{
    return strcmp((*(str *)a).s,(*(str *)b).s);
}
int main()
{
    int n,i;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i<n;i++)
        {
            scanf("%s",st[i].s);
        }
        qsort(st,n,sizeof(st[0].s),cmp);
        for(i=0;i<n;i++)
        {
            printf("%s\n",st[i].s);
        }
    }
    return 0;
}

||warning: command line option "-Weffc++" is valid for C++/ObjC++ but not for C|
\c\main.c||In function 'cmp':|
\c\main.c|10|error: 'str' undeclared (first use in this function)|
\c\main.c|10|error: (Each undeclared identifier is reported only once|
\c\main.c|10|error: for each function it appears in.)|
\c\main.c|10|error: expected expression before ')' token|
\c\main.c|10|error: expected expression before ')' token|
||=== Build finished: 5 errors, 1 warnings ===|
搜索更多相关主题的帖子: 结构体 字符串 
2013-05-18 12:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
第一句说的是 你这个参数-Weffc++ 是用于C++的,而不是用于C的
第二句说的是 str未定义,在C语言中当改为 return strcmp((*(struct str *)a).s,(*(struct str *)b).s);

另外,还有一个错误 qsort(st,n,sizeof(st[0].s),cmp); 应当为 qsort(st,n,sizeof(st[0]),cmp);
因为C/C++可没有规定 sizeof(st[0].s) 一定会等于 sizeof(st[0]),虽然其只有一个成员。
2013-05-18 13:36
快速回复:用qsort对字符串结构体进行排序为什么会出错,大家帮忙修改下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028013 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved