首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C: strchr()和index()之间的差异

C: strchr()和index()之间的差异
EN

Stack Overflow用户
提问于 2010-11-03 21:30:10
回答 2查看 18K关注 0票数 18

我在C中做一些需要使用字符串的事情(就像大多数程序所做的那样)。

在手册中,我发现,在字符串(3):

简要说明 # char * index(const char *s,int c) (.)# char * strchr(const char *s,int c)

所以我好奇地看了一下strchr(3)和index(3)。

我发现这两种方法都是这样做的:

strchr()/index()函数定位s指向的字符串中c的第一次出现。终止空字符被认为是字符串的一部分;因此,如果c为'\0',则函数定位终止'\0‘。

因此,该手册基本上是一个复制和粘贴。

此外,我认为,由于某些模糊的必要性,第二个参数具有int类型,但实际上是一个char。我想我没有错,但是谁能解释一下为什么它是int,而不是char

如果两者是相同的,哪一个版本更兼容,如果不是,那是不同的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-03 21:32:08

strchr()是C标准库的一部分。index()A现已被废弃的POSIX函数。,POSIX规范建议将index()实现为扩展到对strchr()的调用的宏。

由于index()在POSIX中被废弃,而不是C标准库的一部分,所以您应该使用strchr()

第二个参数是int类型,因为这些函数先于函数原型。有关此问题的更多信息,请参见https://stackoverflow.com/a/5919802/

票数 27
EN

Stack Overflow用户

发布于 2010-11-03 21:36:44

看起来,index()函数是一个较旧的函数,应该由strchr()替换。请参见http://www.opengroup.org/onlinepubs/000095399/functions/index.html,其中建议用strchr替换索引,并将索引标记为遗留函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4091864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档