在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、index函数函数定义: char *index(const char *s, int c);
头文件: #include strings.h
函数说明: index()用来找出参数s 字符串中第一个出现的参数c地址,然后将该字符出现的地址返回。字符串结束字符(NULL)也视为字符串一部分。
返回值: 如果找到指定的字符则返回该字符所在地址,否则返回NULL
程序举例: #include <stdio.h>
#include <strings.h>
int main()
{
char *s = "abcdef123456abcdef";
char *p = NULL;
p = index(s, 'b');
printf("%s\n", p);
return 0;
}
执行结果: dzlab:~/test/test# ./a.out
bcdef123456abcdef
二、rindex函数相关函数: char *rindex(const char *s, int c);
函数说明: rindex()用来找出参数s 字符串中最后一个出现的参数c 地址,然后将该字符出现的地址返回。字符串结束字符(NULL)也视为字符串一部分。
程序举例: #include <stdio.h>
#include <strings.h>
int main()
{
char *s = "abcdef123456abcdef";
char *p = NULL;
p = rindex(s, 'b');
printf("%s\n", p);
return 0;
}
执行结果: dzlab:~/test/test# ./a.out
bcdef
三、扩展部分在查man手册的时候,发现头文件是strings.h,不是string.h,是不是手册错了,于是乎百度了一番,找到了具体描述结果: strings.h 头文件是从 BSD 系 UNIX 系统继承而来,里面定义了一些字符串函数,如 bzero 等。这些函数曾经是 posix 标准的一部分,但是在POSIX.1-2001 标准里面,这些函数被标记为了遗留函数而不推荐使用。在 POSIX.1-2008 标准里已经没有这些函数了,如下: int bcmp(const void *, const void *, size_t); /* 用memcmp替代 */ void bcopy(const void *, void *, size_t); /* 用memcpy, memmove替代 */ void bzero(void *, size_t); /* 用memset替代 */ int ffs(int); /* string.h 中有 */ char *index(const char *, int); /* 用strchr替代 */ char *rindex(const char *, int); /* 用strrchr替代 */ int strcasecmp(const char *, const char *); /* string.h 中有 */ int strncasecmp(const char *, const char *, size_t); /* string.h 中有 */
/* We don't need and should not read this file if <string.h> was already read. The one exception being that if __USE_BSD isn't defined, then these aren't defined in string.h, so we need to define them here. */
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论