wordpress 网站内跳转,宁波网站建设的过程,理财产品网站开发文档,网站域名如何备案文章目录 摘要1 strstr1.1 函数使用1.2 模拟实现 2. strtok2.1 函数介绍 3. strerror3.1 函数介绍3.2 strerror 与 perror 摘要
本篇文章介绍了C语言中常用的字符串处理函数#xff0c;包括字符串查找函数 strstr 和字符串分割函数 strtok#xff0c;以及错误信息报告函数 s… 文章目录 摘要1 strstr1.1 函数使用1.2 模拟实现 2. strtok2.1 函数介绍 3. strerror3.1 函数介绍3.2 strerror 与 perror 摘要
本篇文章介绍了C语言中常用的字符串处理函数包括字符串查找函数 strstr 和字符串分割函数 strtok以及错误信息报告函数 strerror。本章将详细说明每个函数的用法、参数和返回值以及演示了如何使用它们。
1 strstr
1.1 函数使用
函数原型
const char* strstr ( const char* str1, const char* str2 );str1要在其中查找的字符串。str2要查找的目标字符串。
strstr 是C语言中一个用于字符串处理的函数该函数用于在一个字符串中查找另一个字符串的第一次出现位置。strstr 函数在 str1 字符串中搜索 str2 字符串并返回第一次找到 str2 的位置指向 str1 中的字符指针。如果没找到 str2则返回 NULL。 以下代码展示了如何使用 strstr 函数来查找字符串
#include stdio.h
#include string.hint main()
{const char* str1 abcdef;const char* str2 def;const char* res strstr(str1, str2);if (res ! NULL) {printf(%s\n, res);} else {printf(在 %s 中未找到 %s\n, str1, str2);}return 0;
}在上面代码中strstr 函数查找字符串 “def” 在 “abcdef” 中的位置并输出找到的位置。如果未找到则输出未找到的消息。
1.2 模拟实现
实现思路
使用一个循环遍历 str1 字符串直到遍历到字符串的 \0 位置。在每次循环中比较 s1 和 s2 指向的字符如果它们相等则继续比较下一个字符。如果 s2 指针成功地遍历完 str2 字符串(*s2 ‘\0’)表示找到了匹配的子字符串返回 sp 指针即匹配开始的位置。如果没有找到匹配将 sp 指针向前移动一个位置继续下一轮的比较。如果遍历完整个 str1 字符串都没有找到匹配返回 NULL 表示未找到。
#include stdio.h
#include assert.hconst char* my_strstr(const char* str1, const char* str2)
{assert(str1 str2);const char* s1 str1;//使用s1遍历str1const char* sp str1;//记录str1中每次开始匹配的位置const char* s2 str2;使用s2遍历str2//使用一个循环遍历 str1 字符串直到遍历到字符串的 \0 位置while (*s1){//比较 s1 和 s2 指向的字符如果它们相等则继续比较下一个字符while (*s1 *s1 *s2){s1;s2;}//s2 指针成功地遍历完 str2 字符串表示找到了匹配的子字符串返回 sp 指针if (*s2 \0){return sp;}//匹配失败将 sp 指针向前移动一个位置继续下一轮的比较sp;s1 sp;s2 str2;}return NULL;
}
int main()
{const char* str1 abc;const char* str2 abcdef;const char* res my_strstr(str1, str2);if (res ! NULL){printf(%s\n, res);}else {printf(在 %s 中未找到 %s\n, str1, str2);}return 0;
}2. strtok
2.1 函数介绍
函数原型
char* strtok ( char* str, const char* delimiters );str要分割的字符串首次调用时传入要分割的字符串后续调用传入 NULL。delimiters 分隔符字符集合表示在哪些字符处分割字符串。
strtok 是C语言中一个用于字符串处理的函数该函数根据指定的分隔符字符将字符串分割成多个子字符串。 strtok工作方式
第一次调用时传入要分割的字符串 str 和分隔符字符集合 delimiters 。函数会在 str 中查找分隔符字符集合中的任何字符并将第一个子字符串的起始地址返回。函数会将找到的分隔符字符替换为 \0从而将原字符串分割成两部分。后续调用 strtok 时给第一个参数传NULL时函数会继续从上一次分割位置的下一个字符开始查找并返回下一个子字符串的起始地址。当没有更多子字符串可以分割时函数返回 NULL表示结束。
需要注意的是 strtok函数会改变被操作的字符串所以在使用strtok函数切分的字符串一般都是临时拷贝的内容 并且可修改。 以下两种方法分别展示了如何使用 strtok 函数将一个字符串分割成多个子字符串
使用for循环
#include stdio.h
#include string.hint main() {char str[] 702144246qq.com;const char set[] .;// 第一次调用后续调用传str后续调用传入 NULLfor (char* _str strtok(str, set); _str ! NULL; _str strtok(NULL, set)){printf(子字符串%s\n, _str);}return 0;
}使用while循环
int main() {char str[] 702144246qq.com;//待切割字符串const char set[] .; //切割字符集合char* _str strtok(str, s); // 第一次调用while (_str ! NULL) {printf(子字符串%s\n, _str);_str strtok(NULL, s); // 后续调用传入 NULL}return 0;
}在上面代码中strtok 函数被用来根据 . 和 分割字符串 “702144246qq.com”并将每个子字符串打印出来。strtok 函数在每次调用时都会返回下一个子字符串的指针直到没有更多子字符串可分割。 运行结果
3. strerror
3.1 函数介绍
函数原型
char* strerror ( int errnum );errnum表示错误码通常是由系统调用或库函数返回的错误码。
strerror 是C语言中错误信息报告函数该函数会根据 errnum 参数返回对应的错误信息字符串。
以下代码展示了如何使用 strerror 函数来获取错误信息
#include stdio.h
#include string.h
#include errno.hint main() {FILE *file fopen(data.txt, r);if (file NULL) {int errnum errno; // 获取当前的错误码printf(错误码:%d\n错误信息%s\n, errnum, strerror(errnum)); // 获取错误信息字符串}else {// 成功打开文件的操作fclose(file);}return 0;
}在上面代码中我们试图打开一个不存在的文件因此 fopen 函数会返回 NULL并且设置了错误码 errno。然后我们使用 strerror 函数根据错误码获取相应的错误信息字符串并打印出了错误消息。
3.2 strerror 与 perror
strerror是将错误码翻译成错误信息并返回错误信息字符串的起始地址。而perror也与处理错误信息有关该函数默认使用全局变量 errno 中的错误码来查找相应的错误信息并打印出对应的错误描述。 函数原型
void perror(const char *s);参数s自定义的错误消息前缀。 以下代码展示了如何使用 perror 函数来打印错误消息
#include stdio.h
#include string.h
#include errno.hint main() {FILE *file fopen(data.txt, r);if (file NULL){perror(打开失败);//用户自定义错误信息前缀。}else{// 成功打开文件的操作fclose(file);}return 0;
}在上面代码中我们试图打开一个不存在的文件因此 fopen 函数返回 NULL 并设置了错误码 errno该函数默认使用errno 中的错误码来查找相应的错误信息。然后我们使用 perror 函数打印错误消息前缀为 “打开失败”以便清晰地指示是由于文件打开失败引发的错误。 运行结果 至此本片文章就结束了若本篇内容对您有所帮助请三连点赞关注收藏支持下。 创作不易白嫖不好各位的支持和认可就是我创作的最大动力我们下篇文章见 如果本篇博客有任何错误请批评指教不胜感激