免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3737 | 回复: 7
打印 上一主题 下一主题

[C] c语言中如何检查数组是否存在某个键名? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-17 11:15 |只看该作者 |倒序浏览
c里是否有类似php中array_key_exists的函数,功能是检查否则数组中是否存在这个键名,查了google和百度后,都是php的,可能c里就没有这个名字的函数,是否有相近功能的其他函数?

http://www.google.com/search?q=c ... lla:zh-CN

http://www.baidu.com/s?ie=gb2312 ... key_exists&ct=0

如果没有的话是不是需要用c里的异常功能(还没看这部分)来处理?如果报异常就是没有,没报就是有

[ 本帖最后由 yahoo21cn 于 2007-8-17 11:33 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-08-17 11:19 |只看该作者
http://www.baidu.com/s?ct=0& ... %D4%DA+%CA%FD%D7%E9


换个关键字搜索,大部分结果还都是其他语言的,我认为c语言的最大学习障碍就是这门语言的名字太短了,不利于搜索引擎查询学习,效率大大降低了

[ 本帖最后由 yahoo21cn 于 2007-8-17 11:33 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-08-17 11:30 |只看该作者
经测试,好像不会产生异常,例如
a['b'] = 1;

printf("%d\n", a['c']);

照样可以输出结果为0

论坛徽章:
0
4 [报告]
发表于 2007-08-17 11:40 |只看该作者
我总是把简单问题复杂化,受python的影响太严重,原来可以用if就简单的判断了

例如
a['b'] = 1
if(a['c']) {
        printf("%d\n", a['c']);
}

if(a['b']) {
        printf("%d\n", a['b']);
}

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
5 [报告]
发表于 2007-08-17 12:04 |只看该作者
a['A'] is equal to a[65], use it at your own risk.

Using C means do it yourself. Anything is possible.

An Example:

struct array_entity_s {
       char key_name[MAX_KEY_NAME];
       void *data;
       struct array_entity_s *next;
};

void *f_get_array_entity(const struct array_entity_s *array, const char *name) {
    for (; array->data != NULL; array++) {
        if (strcmp(array->key_name, name) == 0) {
             return array->data; /* found array entity*/
        }
    }
    return NULL; /* not found */
}

int f_append_array_entity(...){...}

int f_delete_array_entity(...){...}

论坛徽章:
0
6 [报告]
发表于 2007-08-17 13:02 |只看该作者
C没有关联数组,自己封装一个。

论坛徽章:
0
7 [报告]
发表于 2007-08-17 13:07 |只看该作者
让我们转向万恶的吸佳佳吧!

论坛徽章:
0
8 [报告]
发表于 2007-08-17 13:18 |只看该作者
std::map
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP