如果需要对字符串中的单个字符进行查找,那么应该使用 strchr 或 strrchr 函数。

char *strchr(const char *s, int c);

它表示在字符串 s 中查找字符 c,返回字符 c 第一次在字符串 s 中出现的位置,如果未找到字符 c,则返回 NULL。

strchr 函数在字符串 s 中从前到后(或者称为从左到右)查找字符 c,找到字符 c 第一次出现的位置就返回,返回值指向这个位置,如果找不到字符 c 就返回 NULL。

char *strrchr(const char *s, int c);

与 strchr 函数一样,它同样表示在字符串 s 中查找字符 c,返回字符 c 第一次在字符串 s 中出现的位置,如果未找到字符 c,则返回 NULL。

但两者唯一不同的是,strrchr 函数在字符串 s 中是从后到前(或者称为从右向左)查找字符 c,找到字符 c 第一次出现的位置就返回,返回值指向这个位置。下面的示例代码演示了两者之间的区别:

int main(void)
{char str[] = "I welcome any ideas from readers, of course.";char *lc = strchr(str, 'o');printf("strchr: %s\n", lc);char *rc = strrchr(str, 'o');printf("strrchr: %s\n", rc);return 0;
}

对于上面的示例代码,strchr 函数是按照从前到后的顺序进行查找,所以得到的结果为“ome any ideas from readers,of course.”; 而 strrchr 函数则相反,它按照从后到前的顺序进行查找,所以得到的结果为“ourse.”。

示例代码运行结果为:
strchr: ome any ideas from readers, of course.
strrchr: ourse.

最后还需要注意的是,为什么函数的“c”参数是 int 类型,而不是“char”类型呢?

这里用的是字符的 ASCII 码(因为每个字符都对应着一个 ASCII 码),这样在传值的时候既可以传“char”类型的值,又可以传“int”类型的值(0~127)。

C语言中strchr和strrchr函数及用法相关推荐

  1. C语言中itoa和atoi函数的用法

    1.itoa函数的用法 (1) 函数说明 itoa是广泛应用的非标准C语言扩展函数.由于它不是标准C语言函数,所以不能在所有的编译器中使用.但是,大多数的编译器(如Windows上 的)通常在< ...

  2. C 语言中 char[] 的操作函数

    C语言中char[]的操作函数 1.赋值操作 在C语言中,char型数组是不可以直接赋值的.例如在如下的代码中,会得到错误: char c1[20] = "women"; char ...

  3. c语言中val是什么函数,val(val是什么意思)

    有这么一个C语言程序 : int i; long val; for(i=0;i 在C语言中Val是一个将由数字符号(包括正负号.小数点)组成的字符型数据转换成相应的数值型数据的函数,语法格式是Val( ...

  4. c语言中fmod()函数和log10()函数用法

    C语言中fmod函数的功能是x/y的求余运算,适用于double ,float,long double,如果y=0的话,那么返回 值得一提的是%,'%'同样是取余,但是% 适用于整数取余,%是整数的取 ...

  5. c语言中gets函数可以输入空格吗_C语言中printf和gets函数的实用技巧

    Printf函数输出的格式与方法: 想要一起学习交流,或者系统学习c++的可以加553014383,邀请码:悟空,裙内有众多资源及解答老师. 1.输出数字的时候存在宽度和精度,那对于数字而言,输出数字 ...

  6. C语言中fputc和fgetc函数用法

    C语言中文件的读写函数之 fputc.fgetc 首先,我们要知道fputs和fgetc这两个函数是包含在标准库函数中的函数,换句话说,就是封装在标准函数中的两个函数.其中这两个函数都是每次只能输入或 ...

  7. C语言中#define中的一些特殊用法

    转载自:http://blog.sina.com.cn/s/blog_4a4365030100edq7.html define是C语言中的预处理命令,它用于宏定义,可以提高源代码的可读性,为编程提供方 ...

  8. 关于strrchr函数的用法

    在写dll的时候,遇到了麻烦,确切地说是当时没有记住很多的函数,所以才有了这个麻烦,就是我在 加载dll的时候想得到这个dll的名称等,但是我只能得到完整的路径,不能只得到文件名,载msdn里 面翻了 ...

  9. c语言switch case缩进,C语言中的switchnbsp;casenbsp;语句的用法详解

    本文就几个实例来说明Switch case 语句的用法. 说是C语言中的Switch case,其实和html+javascript中的Switch case语法是基本一样的哦. 问题: 有这么一个C ...

最新文章

  1. halcon 定位_HALCON高级篇:单个相机的尺寸测量
  2. 程序员利用Python破解老婆撤回的消息,这样竟然还有老婆?
  3. 威海二职工业机器人专业_现在各大专开设的工业机器人专业前景如何?
  4. 希尔伯特旅馆实验(文末送书)
  5. hive避免MR的情况
  6. 信息学奥赛一本通(2068:【例2.6】鸡兔同笼)
  7. android中打开pdf,在Android应用程序中打开PDF
  8. TensorFlow2实现空间自适应归一化(Spatial Adaptive Normalization, SPADE)
  9. 【转】LPCTSTR,LPWSTR, PTSTR, LPTSTR区别
  10. 学习笔记:SSH端口转发的三种方式
  11. 读书 | 少有人走的路心智成熟的旅程读后感
  12. python 情感分析实例_使用python+机器学习方法进行情感分析(详细步骤)
  13. 淘宝店铺怎么发逛逛?发逛逛有什么要求?
  14. 创业之路 - 魏杰:下一个 10 年,将造就一批新富翁
  15. vue3的pdf文件下载
  16. linux下常用拷贝命令
  17. 面对物联网安全隐患高墙,熵核科技如何实现突围
  18. 什么是三层网络架构,接入交换机、汇聚交换机和核心交换机分别又是什么
  19. wordpress二次元动漫主题模板kanmanman
  20. matlab生成几百个节点的网络拓扑图,MATLAB-绘制网络拓扑结构

热门文章

  1. 三次技术转型的我在帝都的北漂奋斗史
  2. Eclipse安装与使用教程
  3. 硬件基础之HEX文件格式
  4. RK3399 Android7.1实时读取当前cpu频率
  5. HTTP协议-Cookie和Session详解
  6. 自编码器,变分自编码器和生成对抗网络异同
  7. HTTPResponse
  8. Lighthouse performance scoring
  9. python模拟登录qq邮箱
  10. 自勉,持续学习,docker入门