C语言字符串相关函数(strcspn、strspn、strchr、strstr、strtok、isXXX)

发布时间:2026/6/8 14:26:38

C语言字符串相关函数(strcspn、strspn、strchr、strstr、strtok、isXXX) 目录1. strcspn 函数2. strspn 函数3. strchr 函数4. strstr 函数5.总结6.strtok6.2. 工作原理7. isdigit 函数8. isalpha 函数9. isupper 函数10. islower 函数11. isalnum 函数12. isspace 函数13. ispunct 函数14.总结1.strcspn函数项目说明函数原型size_t strcspn(const char *str1, const char *str2);头文件string.h功能计算字符串str1开头连续有几个字符不在字符串str2中返回值第一个在str2中出现的字符在str1中的索引位置名称含义String Complement Span字符串补集跨度参数描述str1要扫描的字符串str2包含要匹配字符的字符串示例代码输出结果strcspn(abc123, 123)3strcspn(hello world, )5strcspn(password, !#)8直到结束都没找到strcspn(123abc, abc)0第一个字符就在set中应用场景示例去除换行符buffer[strcspn(buffer, \n)] \0;查找分隔符int pos strcspn(path, /\\);验证非法字符if (strcspn(input, illegal) strlen(input))2.strspn函数项目说明函数原型size_t strspn(const char *str1, const char *str2);头文件string.h功能计算字符串str1开头连续有几个字符都在字符串str2中返回值开头连续匹配字符的数量名称含义String Span字符串跨度参数描述str1要扫描的字符串str2包含允许字符的字符串示例代码输出结果strspn(abc123, abc)3strspn(111222, 12)6strspn(hello, abcdefghijklmnop)5strspn(123abc, 123)3应用场景示例统计前导数字int len strspn(str, 0123456789);验证数字输入if (strspn(input, 0123456789) strlen(input))跳过空白符int pos strspn(str, \t\n);3.strchr函数项目说明函数原型char *strchr(const char *str, int c);头文件string.h功能在字符串中查找第一次出现的指定字符返回值指向第一次出现字符的指针未找到返回NULL名称含义String Character字符串中的字符参数描述str要扫描的字符串c要查找的字符以int形式传递会被转换为char示例代码输出结果strchr(hello, l)指向llo的指针strchr(hello, x)NULLstrchr(abcabc, a)指向第一个abcabc的指针应用场景示例查找字符位置char *p strchr(str, );截取子串printf(%s, strchr(str, .));统计字符出现次数while((p strchr(p1, ch)) ! NULL) count;进阶用法说明strrchr(str, c)从右侧开始查找最后一次出现4.strstr函数项目说明函数原型char *strstr(const char *haystack, const char *needle);头文件string.h功能在字符串中查找第一次出现的子字符串返回值指向第一次出现子串的指针未找到返回NULL名称含义String String字符串中的字符串参数描述haystack要被搜索的主字符串needle要搜索的子字符串示例代码输出结果strstr(hello world, world)指向world的指针strstr(abcabc, ca)NULL找不到strstr(123123, 23)指向第一个23123的指针应用场景示例查找关键词if (strstr(text, error) ! NULL)提取文件扩展名char *ext strstr(filename, .txt);字符串替换结合其他函数实现替换功能注意事项说明空子串如果needle为空字符串返回haystack大小写敏感区分大小写如需忽略大小写用strcasestr()非标准5.总结函数查找目标返回类型返回内容示例结果strcspn字符集size_t第一个匹配字符的位置strcspn(abc123,123)3strspn字符集size_t开头连续匹配的数量strspn(abc123,abc)3strchr单个字符char*指向该字符的指针strchr(hello,l)llostrstr子字符串char*指向子串的指针strstr(hello,ll)llo6.strtok令牌Token是指被分割符分隔开的、具有独立意义的字符串片段项目说明函数原型char *strtok(char *str, const char *delim);头文件string.h功能将字符串分割成一系列令牌token返回值指向下一个令牌的指针如果没有更多令牌则返回NULL名称含义String Token字符串令牌参数描述str要分割的字符串第一次调用时传入后续调用传入NULLdelim分隔符集合包含所有可能的分隔字符6.2.工作原理步骤说明示例第一次调用传入要分割的字符串函数找到第一个分隔符将其替换为\0返回指向字符串开头的指针strtok(str, ,)后续调用传入NULL函数从上次保存的位置继续查找下一个令牌strtok(NULL, ,)结束条件当没有更多令牌时返回NULL循环结束#include stdio.h #include string.h int main() { // 1. 定义一个要分割的字符串 char str[] apple-banana-orange; // 2. 使用strtok分割以-为分隔符 char *token strtok(str, -); // 3. 循环打印所有令牌 while (token ! NULL) { printf(%s\n, token); // 打印当前令牌 token strtok(NULL, -); // 获取下一个令牌 } return 0; } /* 输出 apple banana orange */7.isdigit函数项目说明函数原型int isdigit(int c);头文件cctype(C) 或ctype.h(C)功能检查字符是否为十进制数字返回值如果是数字(0-9)返回非零值否则返回0名称含义Integer DIGIT整数数字输入字符返回值说明0-9非零值(通常为1)所有数字字符A0字母不是数字 0空格不是数字\n0换行符不是数字$0特殊符号不是数字应用场景示例验证数字输入if (!isdigit(c)) return false;提取字符串中的数字if (isdigit(str[i])) num num * 10 (str[i] - 0);解析用户输入检查输入是否全为数字8.isalpha函数项目说明函数原型int isalpha(int c);头文件cctype(C) 或ctype.h(C)功能检查字符是否为字母返回值如果是字母(A-Z或a-z)返回非零值否则返回0名称含义ALPHAbet字母表输入字符返回值说明A-Z非零值大写字母a-z非零值小写字母00数字不是字母 0空格不是字母?0符号不是字母应用场景示例验证姓名输入if (!isalpha(name[i])) 错误提示统计文本中的字母数if (isalpha(text[i])) letterCount;过滤非字母字符只保留字母用于进一步处理9.isupper函数项目说明函数原型int isupper(int c);头文件cctype(C) 或ctype.h(C)功能检查字符是否为大写字母返回值如果是大写字母(A-Z)返回非零值否则返回0名称含义UPPER case大写输入字符返回值说明A-Z非零值大写字母a-z0小写字母不是大写00数字不是字母 0空格不是字母应用场景示例检查密码复杂性if (isupper(pwd[i])) hasUpper true;转换大小写tolower(c)常与isupper配合使用统计大写字母分析文本中大写字母的出现频率10.islower函数项目说明函数原型int islower(int c);头文件cctype(C) 或ctype.h(C)功能检查字符是否为小写字母返回值如果是小写字母(a-z)返回非零值否则返回0名称含义LOWER case小写输入字符返回值说明a-z非零值小写字母A-Z0大写字母不是小写00数字不是字母 0空格不是字母应用场景示例检查密码复杂性if (islower(pwd[i])) hasLower true;转换大小写toupper(c)常与islower配合使用统计小写字母分析文本中小写字母的出现频率11.isalnum函数项目说明函数原型int isalnum(int c);头文件cctype(C) 或ctype.h(C)功能检查字符是否为字母或数字返回值如果是字母(A-Z,a-z)或数字(0-9)返回非零值否则返回0名称含义ALpha NUMeric字母数字输入字符返回值说明A-Z非零值大写字母a-z非零值小写字母0-9非零值数字 0空格不是字母数字0符号不是字母数字应用场景示例过滤特殊字符只保留字母和数字用于用户名验证字符串清理移除标点符号和空格分词处理识别单词和数字的边界12.isspace函数项目说明函数原型int isspace(int c);头文件cctype(C) 或ctype.h(C)功能检查字符是否为空白字符返回值如果是空白字符返回非零值否则返回0名称含义SPACE空格空白字符ASCII值说明 32空格\t9水平制表符\n10换行\v11垂直制表符\f12换页\r13回车应用场景示例去除字符串首尾空白配合指针移动跳过空白单词计数根据空白符分割单词格式化解析跳过空格和制表符13.ispunct函数项目说明函数原型int ispunct(int c);头文件cctype(C) 或ctype.h(C)功能检查字符是否为标点符号返回值如果是标点符号返回非零值否则返回0名称含义PUNCTuation标点标点符号示例说明.!?,;:句号、感叹号、问号、逗号等-()[]{}括号、破折号等#$%^*特殊符号/运算符符号应用场景示例移除标点符号if (!ispunct(c)) 保留字符文本分析统计文章中标点符号的使用频率语法检查识别句子结束符14.总结函数检查内容返回真时的字符常见应用isdigit()数字0-9验证数字输入isalpha()字母A-Z,a-z验证文本输入isupper()大写字母A-Z密码复杂度检查islower()小写字母a-z密码复杂度检查isalnum()字母或数字A-Z,a-z,0-9过滤特殊字符isspace()空白字符空格、制表符、换行等单词分割ispunct()标点符号.,!?;:等文本清理

相关新闻