我在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?
如果两者是相同的,哪一个版本更兼容,如果不是,那是不同的?
发布于 2010-11-03 21:32:08
strchr()是C标准库的一部分。index()是A现已被废弃的POSIX函数。,POSIX规范建议将index()实现为扩展到对strchr()的调用的宏。
由于index()在POSIX中被废弃,而不是C标准库的一部分,所以您应该使用strchr()。
第二个参数是int类型,因为这些函数先于函数原型。有关此问题的更多信息,请参见https://stackoverflow.com/a/5919802/。
发布于 2010-11-03 21:36:44
看起来,index()函数是一个较旧的函数,应该由strchr()替换。请参见http://www.opengroup.org/onlinepubs/000095399/functions/index.html,其中建议用strchr替换索引,并将索引标记为遗留函数。
https://stackoverflow.com/questions/4091864
复制相似问题