C语言中查找字符在字符串中出现的位置的方法_C 语言

C语言strchr()函数:查找某字符在字符串中首次出现的位置

头文件:#include <string.h>

strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:

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

【参数】str 为要查找的字符串,c 为要查找的字符。

strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。

注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。

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

返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。

提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr() 函数。

【实例】查找字符5首次出现的位置。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
  char *s = "0123456789012345678901234567890";
  char *p;
  p = strchr(s, '5');
  printf("%ld\n", s);
  printf("%ld\n", p);
  system("pause");
  return 0;
}

输出结果:

12016464
12016469

 

C语言strrchr()函数:查找某字符在字符串中最后一次出现的位置

头文件:#include <string.h>

strrchr() 函数用于查找某字符在字符串中最后一次出现的位置,其原型为:

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

【参数】str 为要查找的字符串,c 为要查找的字符。

strrchr() 将会找出 str 字符串中最后一次出现的字符 c 的地址,然后将该地址返回。

注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。

【返回值】如果找到就返回该字符最后一次出现的位置,否则返回 NULL。

返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。

提示:如果希望查找某字符在字符串中第一次出现的位置,可以使用 strchr() 函数。

实例:查找字符5最后一次出现的位置。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
  char *s = "0123456789012345678901234567890";
  char *p;
  p = strrchr(s, '5');
  printf("%ld\n", s);
  printf("%ld\n", p);
  system("pause");
  return 0;
}

执行结果:

12999504
12999529

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c语言
字符位置
c语言查找字符串位置、c语言查找字符串、c语言查找指定字符串、c语言字符串查找函数、c语言文件查找字符串,以便于您获取更多的相关知识。

时间: 2024-08-01 13:55:27

C语言中查找字符在字符串中出现的位置的方法_C 语言的相关文章

C++查找字符在字符串中出现的次数

查找字符在字符串中出现的次数: int count1(char* str,char* s) { char* s1; char* s2; int count = 0; while(*str!='\0') { s1 = str; s2 = s; while(*s2 == *s1&&(*s2!='\0')&&(*s1! ='0')) { s2++; s1++; } if(*s2 == '\0') count++; str++; } return count; }

详解C++中的vector容器及用迭代器访问vector的方法_C 语言

vector vector是相同类型对象的集合.集合中的每个对象有个对应的索引.vector常被称为容器(container). 为了使用vector,需要: #include <vector> using std::vector; vector是一个类模版(class template).C++有函数模版和类模版.模版本身不是函数或类,必须通过指定 类型让编译器去实例化(instantiation)它.比如vector<int> ivec. vector是模版,不是类型.从vec

C语言编程中统计输入的行数以及单词个数的方法_C 语言

统计输入的行数 标准库保证输入文本流以行序列的形式出现,每一行均以换行符结束.因此,统计行数等价于统计换行符的个数. #include <stdio.h> /* count lines in input */ main() { int c, nl; nl = 0; while ((c = getchar()) != EOF) if (c == '\n') ++nl; printf("%d\n", nl); } 在该程序中,while 循环语句的循环体是一个 if 语句,它控

C++不使用变量求字符串长度strlen函数的实现方法_C 语言

本文实例讲述了C++不使用变量求字符串长度strlen函数的实现方法.分享给大家供大家参考.具体实现方法如下: 1.strlen的源码实现: size_t strlen(const char *str) //strlen不做内存非法判断,如果是NULL,会core. { const char *eos=str; while(*eos++); return (eos-str-1); } 2.常见面试题会要求不使用额外变量,实现strlen函数: 实现一: int strlen(const char

C语言实现在数组A上有序合并数组B的方法_C 语言

本文实例讲述了C语言实现在数组A上有序合并数组B的方法,分享给大家供大家参考.具体分析如下: 题目:数组A和数组B均有序,数组A有足够大内存来容纳数组B,将数组B有序合并到数组A中 分析:如果由前至后合并,复杂度将会是O(N2),这样的复杂度显然不是最优解,利用两个指针指向两个数组的尾部,从后往前遍历,这样的复杂度为O(n2) 由此可以写出下面的代码: #include <iostream> #include <algorithm> #include <iterator>

VC中实现GB2312、BIG5、Unicode编码转换的方法_C 语言

本文主要以实例形式讨论了VC编译环境下,实现字符串和文件编码方式转换的方法,在linux下请使用Strconv来实现.具体方法如下: 一.文件编码格式转换 //GB2312 编码文件转换成 Unicode: if((file_handle = fopen(filenam,"rb")) != NULL) { //从GB2312源文件以二进制的方式读取buffer numread = fread(str_buf_pool,sizeof(char),POOL_BUFF_SIZE,file_h

基于VC中使用ForceInclude来强制包含stdafx.h的解决方法_C 语言

在使用VC编程中,为了加快编译,vc编译器提供了预编译的功能.即在cpp代码中包含stdafx.h,那么就可以使用到预编译.如下所示: 复制代码 代码如下: #include "stdafx.h"class Demo{public:    Demo(void);    ~Demo(void);}; 注意: #include "stdafx.h" 是自己手动写的,默认是没有的.因此,有时总会出现忘记写这个的事情,这时候编译器就会报一个错误: 复制代码 代码如下: Er

判断整数序列是否为二元查找树的后序遍历结果的解决方法_C 语言

题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果.如果是返回true,否则返回false.例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果.    8    / \  6   10 / \    / \ 5  7 9 11因此返回true.如果输入7.4.6.5,没有哪棵树的后序遍历的结果是这个序列,因此返回false.本题网上已经有用递归单纯判断的解法. 个人解法: 先得到序列对应的中序序列, 然后看中序序列是否从小到大有序, 得出判断. 相比

将字符串str1复制为字符串str2的三种解决方法_C 语言

1.自己编写函数,将两个字符串进行复制 复制代码 代码如下: #include<iostream>using namespace std;int main(){   char str1[]="I love China!",str2[20];   void Strcpy(char *p1,char *p2);   Strcpy(str2,str1);   cout<<"str1: "<<str1<<endl;   cou