本篇主要介绍3个库函数

一、strstr字符串查找

二、strtok字符串切割

三、strerror返回错误码,打印错误类型

四、perror(和strerror功能类似)

strstr

1.1        strstr---查找字符串函数   (在一个字符串里面查找是否包含另一个字符串)

             存在返回第一次出现的地址,不存在返回空指针  

1.2        char*   strstr   (const   char*   ,   const   char* ) ;

1.3        strstr 的使用

int main()
{char arr1[] = "abbcdef";char arr2[] = "bbc";char* ret = strstr(arr1, arr2);if (NULL == ret){printf("找不到\n");}else{printf("%s\n", ret);}return 0;
}

 1.4        实现my_strstr

char* my_strstr(const char* str1, const char* str2)
{assert(str1 && str2);//断言//先创建变量const char* s1 = NULL;const char* s2 = NULL;const char* cp = str1;//创建变量cp,方便回头查找//那如果查找的是空字符串怎么办,考虑全if (*s2 == '\0'){return (char*)str1;}//开始查找while (*cp){//赋值s1 = cp;//都指向第一个字符s2 = str2;while (*s1 && *s2 && (*s1 == *s2))//查找进入的条件是两个字符都不是'\0'{s1++;s2++;}if (*s2 == '\0'){return (char*)cp;}cp++;//如果没找到,则返回str1的下一个字符继续查找//写完之后还要再修改一下,为了更加优化//都找完了还没有找到,要返回空指针}return NULL;
}

在查找字符串的时候,我们可能会碰到"abbbcdef","bbc"  这种情况,隐含了"bbc",所以在查找字符串的时候,需要代码能够实现回头查找的功能(上述代码),cp的存在就是实现回头查找的功能

strtok

2.1        1)sep参数是个字符串,定义了用作分隔符的字符串集合

              2)第一个参数指定了一个字符串,它包含了0个或多个由sep字符串中一个或者多个分隔符分割的标记

              3)strtok的使用共有( n + 1 )次调用,第一次调用传参为 :临时拷贝字符串,分隔符标记的字符集合(sep);随后n次调用传参为:NULL,分隔符标志的字符集合(sep)

4)strtok函数在第一次调用的时候,找到str中第一个标记,保存它在字符串中的位置,在以后n次调用中,strtok函数将在同一个字符串中被保存的位置开始查找下一个标记,如果找不到,返回NULL(为什么以后n次传参为空指针,因为已经返回指向这个标记的地址了)

 5)strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容,并且要可修改

2.2        char*   strtok   (char*   str   ,   const   char*   sep)   ;

2.3        strtok的使用

int main()
{char arr[] = "I love china !";char* p = " ";//空格为分割标志char tmp[30] = { 0 };strcpy(tmp, arr);//拷贝一份,用它来分割char* ret = NULL;//写成循环形式来实现自己的结束for (ret = strtok(tmp, p); ret != NULL; ret = strtok(NULL, p)){printf("%s\n", ret);}return 0;
}

 strerror

3.1        在调用库函数失败时,都会设置错误码(C语言设置好的),strerror会返回错误码所对应的错误信息

头文件为#include   <errno.h>#include   <string.h>

int main()
{printf("%s\n", strerror(0));printf("%s\n", strerror(1));printf("%s\n", strerror(2));printf("%s\n", strerror(3));printf("%s\n", strerror(4));printf("%s\n", strerror(5));printf("%s\n", strerror(6));printf("%s\n", strerror(7));printf("%s\n", strerror(8));printf("%s\n", strerror(9));printf("%s\n", strerror(10));return 0;
}

3.2        strerror的使用


int main()
{//打开文件失败的时候,返回NULLFILE* pf = fopen("test.txt", "r");if (pf == NULL){printf("%s\n", strerror(errno));return 1;}//读文件//关闭文件fclose(pf);pf = NULL;return 0;
}

3.3        perror

头文件为#include   <stdio.h>

int main()
{//打开文件失败的时候,返回NULLFILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读文件//关闭文件fclose(pf);pf = NULL;return 0;
}

1.首先把错误码转化为错误信息

 2.打印错误信息(包含了自定义的信息)

对比strerror:

strerror是把错误码转化为错误信息,要打印需加上printf打印,而perror自带打印,且包含自定义信息

C语言中有关字符串的库函数(3)相关推荐

  1. atoi函数_每日干货丨C语言中的字符串处理库函数介绍与实现

    strlen函数:求字符串的长度 size_t strlen(const char *s) 头文件:#include 说明:求出s指向的字符串的长度(不包括null字符). 返回值:返回s指向的字符串 ...

  2. c语言中用于获取字符串长度的函数是,C语言中求字符串长度的函数的几种实现方法...

    C语言中求字符串长度的函数的几种实现方法 1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { ass ...

  3. c语言中字符怎么表示6,6、C语言中的字符串

    一.C语言中的字符串 字符串是一种重要的数据类型,但是C语言并没有显示的字符串数据类型,不像java有String ,OBC有NSString等等.所以C语言中的字符串一般以字符串常量的形式出现或者存 ...

  4. c语言中有裁剪字符串的函数吗,C语言中的字符串截取函数

    /*======================================================== 子数整数 源程序名 num.??? (pas,c,cpp) 可执行文件名 num. ...

  5. c语言字符串前加l,【C】 30_C语言中的字符串

    字符串的概念 字符串是有序字符的集合 字符串是程序中的基本元素之一 C 语言中没有字符串的概念 C 语言中通过特殊的字符数组模拟字符串 C 语言中的字符串是以 '\0' 结尾的字符数组 字符串与字符数 ...

  6. python字符串截取方法_如何使用python语言中的字符串方法截取字符串

    在我们使用python语言中的字符串方法时,可能会判断某个字符串是否以什么开头,可以使用什么进行截取等.下面利用几个实例说明字符串中的方法的用法,操作如下: 工具/原料 python 截图工具 方法/ ...

  7. 【C语言进阶深度学习记录】二十六 C语言中的字符串与字符数组的详细分析

    之前有一篇文章是学习了字符和字符串的,可以与之结合学习:[C语言进阶深度学习记录]十二 C语言中的:字符和字符串 文章目录 1 字符串的概念 1.1 字符串与字符数组 1.2 字符数组与字符串代码分析 ...

  8. c语言中字符串数组应用,C语言中字符变量字符串和字符数组应用.doc

    C语言中字符变量字符串和字符数组应用 字符变量(type`char`?字符串(string)和字符数组(type`char`arrary)是C语言中非常重要的结构成分,也是应用编程中常发生混淆?导致错 ...

  9. c语言字 字符串转换成数组_C语言学习教程之详解C语言中的字符串数组

    在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include 总结 以上 ...

  10. c 语言输出字符用什么作用是什么,C语言中输出字符串用什么符号

    C语言中输出字符串用双引号. (推荐教程:c语言教程) 详细解读: 在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是: puts():输出字符串并自动换行,该函数只能输出字符串. ...

最新文章

  1. 使用AD8302进行检波
  2. app息屏后ajax请求不执行_息屏时钟app下载-息屏时钟软件下载v1.0 安卓版
  3. JavaScript 3D图表
  4. 边工作边考研的计算机经验,边工作边考研的经验
  5. python summary writer_tensorflow中summary操作
  6. Android 解析JSON
  7. java原生的ajax怎么写,用原生js实现 ajax方法
  8. 计算机拆装与网络配置技能,计算机硬件及网络计算机原理与拆装.ppt
  9. javascript数字补零
  10. js 数字格式化,只能输入正负整数,小数
  11. 巧妙的使用RDP报表工具(免费报表工具、报表设计器)Excl绘制报表
  12. 已知鸡兔共35只c语言,行测数量关系技巧:巧解鸡兔同笼问题
  13. 一个产品从立项到上线流程总结
  14. Mybatis事务隔离级别
  15. 360视频:分段球面投影SSP
  16. MGTools 一款专业级键鼠性能测试工具
  17. javascript 知识
  18. unity_在canvas中修改text和text到底是什么
  19. puzzle(0112)不规则数独、变种数独
  20. 【调剂】北京科技大学钢铁共性技术协同创新中心2021年硕士拟接收调剂公告

热门文章

  1. IntelliJ IDEA 超实用使用技巧分享
  2. 渗透测试信息收集笔记(信息搜集、后台查找)
  3. 虚拟服务器修改教程,【新挑战】十二职业虚拟机一键端图文架设修改教程
  4. 技术总监需要做些什么?
  5. 普渡大学计算机工程专业提前毕业,Purdue的ECE「普渡大学西拉法叶分校电气与计算机工程学院」...
  6. HDL4SE:软件工程师学习Verilog语言(十三)
  7. 上海二工大 - 健康日报AutoCheck
  8. 金蝶K3修改核算项目锁定字段的默认长度(以物料主数据的助记码为例)
  9. 2014年11月合肥黄山宏村之旅
  10. 【转帖】mysql锁机制