函数定义:char *index(const char *s, int c);

头文件:    #include strings.h

函数说明:index()用来找出参数s 字符串中第一个出现的参数c 地址,然后将该字符出现的地址返回。字符串结束字符(NULL)也视为字符串一部分。

返回值:如果找到指定的字符则返回该字符所在地址,否则返回NULL

程序举例:

#include

#include

int main()

{

char *s = "abcdef123456abcdef";

char *p = NULL;

p = index(s, 'b');

printf("%s\n", p);

return 0;

}

执行结果:

dzlab:~/test/test# ./a.out

bcdef123456abcdef

相关函数:char *rindex(const char *s, int c);

函数说明:rindex()用来找出参数s 字符串中最后一个出现的参数c 地址,然后将该字符出现的地址返回。字符串结束字符(NULL)也视为字符串一部分。

程序举例:

#include

#include

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 中有 */

这两个头文件都在linux的/usr/include目录下面,后者比前者多了一个s,一般使用以string.h(没有s)的为主,那strings.h(有s)什么时候使用呢?打开这个头文件,可以看见区别如下:

/* We don't need and should not read this file if 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. */

所以,一般使用前者就可以了。

c语言字符串匹配函数index,C语言(函数)学习之index、rindex相关推荐

  1. c语言字符数组赋值超过,C语言字符数组赋值

    C语言字符数组赋值教程 C语言字符数组赋值详解 语法 arr[index] = value; 参数 参数 描述 arr 数组名. index 需要赋值的下标索引. value 需要设置的值. 说明 给 ...

  2. C语言-字符串匹配题目

    题目描述 对于字符串s和t,若t是s子串,返回t在s中的位置(t的首字符在s中对应的下标),否则返回-1. 字符串最大长度为1000 输入 第一行给定字符串s 第二行给定字符串t 输出 t是s的子串, ...

  3. C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt

    C语言第13讲指针与字符串(字符数组).ppt 6.2.3 指针与字符串(字符数组) C语言用字符数组存放字符串. 字符数组元素个数确定,一般用下标控制循环. 字符串有效字符个数由0确定,用结束符0控 ...

  4. c语言字符画火箭,用C语言实现火箭的升空

    /计算机程序设计 ----课程设计(C语言) 题目:用C语言实现火箭的升空 学院: 专业: 班级: 姓名: 指导教师: 设计日期: 一. 选题背景: 问题的提出:在科学技术高度发达的世界的今天,人类向 ...

  5. c语言字符型输入格式化,c语言之字符串和格式化输入输出

    字符串和格式化输入输出 #include #include #define DENSITY 62.4 int main(void) { float weight, volume; int size, ...

  6. c语言字符型常量计算,c语言字符型常量和变量.doc

    c语言字符型常量和变量 谅娄协逞妥唐氦错赵夏教灶技竞白量菲荚锚坤缆咕囤厢失随着牲淋我雾谋蹬格椭金佃贮官梳冕萨鱼疥卫答襟回咬逢砾摘宛嵌拎宛拽抱钢簧彩城挛霉门窗莉辉托罚椽建呛液汛炕午望延晒纠挺谱阔衔解抗贱 ...

  7. c语言字符型数据是,C语言字符型数据.doc

    C语言字符型数据 2.5.1字符常量字符常量是指用一对单引号括起来的一个字符.如'a','9','!'.字符常量中的单引号只起定界作用并不表示字符本身.单引号中的字符不能是单引号(')和反斜杠(\), ...

  8. c语言字符幂函数怎么编写,c语言幂函数_C ++中的幂函数

    c语言幂函数 C ++幂函数 (C++ power functions) Power functions are used to calculate the powers (like, raise t ...

  9. c语言字符指针分配内存,内存分配函数及使用注意事项,C语言内存分配函数完全攻略...

    C 语言主要提供 malloc.realloc.calloc.alloca 与 aligned_alloc 等内存分配函数来实现对内存的分配功能. 1)malloc 函数原型如下: void * ma ...

最新文章

  1. linux 超级权限图标,Linux下使用iconv库出错,急!!!
  2. TCP协议通讯流程(三次握手及四次挥手)
  3. jvm7 jvm8_我们真的仍然需要32位JVM吗?
  4. Linux用户、权限及改变文件所有者及文件所属组多例详解 附python代码
  5. 扫雷java讲解_java课程设计(扫雷游戏)讲解.doc
  6. Android图片,PNG还是JPG?用哪种?
  7. 关于DiskFileUpload的杂谈
  8. asp毕业设计——基于asp+access的公司门户网站设计与实现(毕业论文+程序源码)——公司门户网站
  9. ios人脸识别_适用于Android和iOS的10种最佳人脸识别应用程序
  10. Docker 安装(使用阿里源)
  11. Linux系统CPU占用100%原因分析
  12. 怎么打开计算机开机启动菜单,计算机怎么添加多系统启动菜单?
  13. golang设计模式——结构模式
  14. 我的第一个tableau故事
  15. Python里的%s和%d是什么意思
  16. freebsd 安装 java_转 FreeBSD 安装JDK
  17. Python OpenCV 图像匹配(Brute-Force与FLANN)的原理与代码实现
  18. H3C IRF2典型应用(1)
  19. 赛迪智库陆峰:大数据和人工智能开启产业发展新时代
  20. GTD实践Week1

热门文章

  1. 四因素三水平正交表_做论文要用正交表?我打包送给你
  2. spark sql读取hive底层_[大数据]spark sql读写Hive数据不一致
  3. python字符串是否包含某元素_Python实现判断一个字符串是否包含子串的方法总结...
  4. sambd ERROR: job for smbd.service failed
  5. Juypter 代码自动补全
  6. update和delete操作忘加where条件导致全表更新的处理方法
  7. VIP站长大会(北京站)常见问题解答
  8. InnoDB事务结构体代码变量列表
  9. 分布式计算 MapReduce与yarn工作机制
  10. KMP POJ 2752 Seek the Name, Seek the Fame