目录
开头
大家好,我叫这是我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;
}
流程图
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;
}
结尾
在你看到这里之后,可以评论来互动一下我哦。