C语言strpbrk函数

开头

大家好,我叫这是我58。今天,我们要学一下关于C语言里的能定位字符串中的字符的strpbrk函数的一些知识。

1.什么是strpbrk函数?

strpbrk函数,来自于头文件string.h,用来定位字符串中的字符,在C语言中,它只能由这样构成:char * strpbrk ( const char * str1, const cha * str2)1,其中,str1代表了从哪里定位,str2则代表了要定位的一些字符。如果这个函数成功地定位出了某一个字符(不包括\0),就返回已经从定位好的字符串中的这个字符的地址,否则返回空指针。在我讲完strpbrk函数的基本介绍后,就让我们一起来看一看strpbrk的内部吧。

2.strpbrk函数的内部

程序

char* strpbrk(const char* cp, const char* cpa) {
	const char* cpb = cpa;
	for (; *cp; cp++) {
		for (cpb = cpa; *cpb; cpb++) {
			if (*cp == *cpb) {
				return cp;
			}
		}
	}
	return NULL;
}

流程图

strpbrk函数
是(返回cp)
否(返回空指针)
结束
开始
定义常量字符指针cpb为cpa
*cp?
把cpb设为cpa
*cpb?
*cp == *cpb?
把cpb向右移动一位
把cp向右移动一位

3.strpbrk函数的实际应用

定位字符串中的字符

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main() {
	char str[99] = "";
	char stra[99] = "";
	scanf("%s %s", str, stra);
	char* cp = strpbrk(str, stra);
	cp && printf("字符%c在整个str字符串里的下标为:%d\n", *cp, cp - str),cp || printf("定位失败,cp为NULL\n");
	return 0;
}

求元音字母(a e i o u A E I O U)的个数

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main() {
	int iconut = 0;
	char str[999] = "";
	char* cp = str;
	printf("请输入你想要从中查询元音字母的个数的字符串 -> ");
	scanf("%s", str);
	for (; cp = strpbrk(cp, "aeiouAEIOU");cp++, iconut++) {
		;
	}
	printf("%s的元音字母个数:%d", str, iconut);
	return 0;
}

NB158 牛牛的名字游戏

#include <string.h>
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param s string字符串
 * @return int整型
 */
int lengthOfLastWord(char* s ) {
    int iconut = 0;
    char* cp = strpbrk(s, " ");
    if (!cp) {
        return strlen(s);
    }
    cp && (cp += strlen(s) - 1);
    for (; ' ' == *cp; cp--) {
        ;
    }
    for (; ' ' != *cp; iconut++, cp--) {
        ;
    }
    return iconut;
}

结尾

在你看到这里之后,可以评论来互动一下我哦。


  1. 选自C语言中strpbrk函数的简介 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值