文章目录
一. 库函数strcmp()
参考文档:strchr - C++ Reference (cplusplus.com)
const char * strchr ( const char * str, int character );
char * strchr ( char * str, int character );
函数描述:定位字符串中出现的第一个字符
返回指向C字符串str中第一次出现的字符的指针。
结束的空字符被认为是C字符串的一部分。因此,也可以定位它,以便检索指向字符串末尾的指针。
函数参数:
- str:C字符串
- character:要定位的字符。它作为其int提升传递,但为了进行比较,它在内部被转换回char。
函数返回:指向str中第一次出现的字符的指针。如果没有找到该字符,则该函数返回空指针。
#include <stdio.h>
#include <string.h>
void StrchrTest()
{
char src[] = "Hello World!";
char *findRet = strchr(src, 'W');
if (findRet != NULL)
{
printf("%s\n", findRet);
}
}
int main()
{
StrchrTest();
return 0;
}
二. 模拟strchr()
#pragma once
#include <stdio.h>
#include <assert.h>
/// <summary>
/// 字符串查找字符(模拟实现)
/// </summary>
/// <param name="s"></param>
/// <param name="c"></param>
/// <returns></returns>
char* my_strchr(char* s, int c)
{
assert(s);
char* p_begin = s;
while (*p_begin != c)
{
if (*p_begin == '\0')
return NULL;
p_begin++;
}
return p_begin;
}
/// <summary>
/// 字符串查找字符(模拟实现)
/// </summary>
/// <param name="s"></param>
/// <param name="c"></param>
/// <returns></returns>
const char* my_const_strchr(const char* s, int c)
{
assert(s);
const char* p_begin = s;
while (*p_begin != c)
{
if (*p_begin == '\0')
return NULL;
p_begin++;
}
return p_begin;
}
打印结果:
#include <iostream>
#include <string.h>
#include "my_strchr.h"
using namespace std;
int main()
{
char str[] = "Hello World! AAAAAAA";
char* c = strchr(str, 'A');
char* d = my_strchr(str, 'A');
printf("%s\n", c); // AAAAAAA
printf("%s\n", d); // AAAAAAA
const char* constStr = "Hello World!";
const char* p = strchr(constStr, 'W');
const char* a = my_const_strchr(constStr, 'W');
printf("%s\n", p); // World!
printf("%s\n", a); // World!
return 0;
}