C语言中的strstr和strtok函数是两个常用的字符串处理函数,它们分别用于在一个字符串中查找子字符串的首次出现位置和将一个字符串分割成多个子串,本文将详细介绍这两个函数的使用方法,并通过实例进行解析。
strstr函数
1、函数原型
char *strstr(const char *haystack, const char *needle);
2、参数说明
haystack:要在其中查找子串的字符串指针。
needle:要查找的子串。
3、返回值
如果在haystack中找到了needle,则返回needle在haystack中的首次出现位置的指针;如果没有找到,则返回NULL。
4、示例代码
include <stdio.h> include <string.h> int main() { char str[] = "Hello, world!"; char *p = strstr(str, "world"); if (p) { printf("找到子串'world',首次出现位置为:%ld ", p str); } else { printf("未找到子串'world' "); } return 0; }
strtok函数
1、函数原型
char *strtok(char *str, const char *delim);
2、参数说明
str:要分割的字符串指针,第一次调用时传入该字符串,后续调用传入NULL,每次调用都会返回上一次调用结束时的子串指针。
delim:分隔符字符串,该字符串中包含的字符将作为分隔符,如果传入NULL,则使用空格、制表符和换行符作为分隔符。
3、返回值
返回指向下一个子串的指针,当所有子串都已分割完毕时,返回NULL。
4、示例代码
include <stdio.h> include <string.h> include <stdlib.h> int main() { char str[] = "Hello, world! This is a test."; char *token = strtok(str, " ,.!"); // 以空格、逗号、句号和感叹号作为分隔符分割字符串 while (token != NULL) { printf("%s ", token); // 输出分割后的子串 token = strtok(NULL, " ,.!"); // 继续分割下一个子串,传入NULL表示从下一个字符开始分割 } return 0; }
相关问题与解答
1、如何自定义分隔符?
答:可以使用正则表达式来定义自定义的分隔符,如果要使用“|”作为分隔符,可以将正则表达式编译为一个regex_t对象,然后将其传递给strtok函数,具体实现方法可以参考C语言中的regex库文档。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/224300.html