目录

一.求字符串长度

1.strlen用来计算字符串的长度(该长度不包括'\0')

二.长度不受限制的字符串函数

1.strcpy字符串拷贝

2.strcat附加一个字符串

3.strcmp字符串大小比较

三.长度受限制的字符串函数介绍

1.strncpy字符串拷贝(能设置要拷贝的字符个数)

2.strncat 附加一个字符串(可指定要附加的大小)

3.strncmp 字符串比较(可设置比较的个数)

四.字符串查找

1.strstr子字符串的查找

2.strtok字符串拆分


一.求字符串长度

1.strlen用来计算字符串的长度(该长度不包括'\0')

#include<stdio.h>
#include<string.h>
int main()
{char arr[]="abcdef";int ret=strlen(arr);printf("%d\n",ret);return 0;
}

运行结果:

模拟实现strlen

#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* arr)
{assert(arr);//断言用来判断接收的arr是否为NULLint count = 0;while (*arr++)//当*arr不等于'\0'时继续往下计算{count++;}return count;
}
int main()
{char arr[] = "abcdef";int ret = my_strlen(arr);//将arr传过去,传的是数组首元素的地址printf("%d\n", ret);return 0;
}

二.长度不受限制的字符串函数

1.strcpy字符串拷贝

#include<stdio.h>
#include<string.h>
int main()
{char arr1[] = "abcdef";char arr2[10] = { 0 };strcpy(arr2, arr1);printf("%s\n", arr2);return 0;
}

运行结果:

模拟实现strcpy

#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest, const char* str)
{assert(dest && str);char* ret = dest;//记录dest的起始位置while (*dest++ = *str++)//当*str不等于'\0'时一直将现在的值赋值给dest{;}return ret;//函数返回类型为char*用ret返回
}
int main()
{char arr1[] = "abcdef";char arr2[10] = { 0 };my_strcpy(arr2, arr1);printf("%s\n", arr2);return 0;
}

2.strcat附加一个字符串

#include<stdio.h>
#include<string.h>
int main()
{char arr1[10] = "abcd";char arr2[] = "efg";strcat(arr1, arr2);printf("%s\n", arr1);return 0;
}

运行结果:

模拟实现strcat

#include<stdio.h>
#include<assert.h>char* my_strcat(char* dest, const char* str)
{assert(dest && str);char* ret = dest;while (*dest)//找到'\0'的位置{dest++;}while (*dest++ = *str++)//将字符赋值给目标{;}return ret;
}
int main()
{char arr1[10] = "abcd";char arr2[] = "efg";my_strcat(arr1, arr2);printf("%s\n", arr1);return 0;
}

3.strcmp字符串大小比较

#include<stdio.h>
#include<string.h>
int main()
{char arr1[] = "zhangsan";char arr2[] = "lisi";int ret = strcmp(arr1, arr2);printf("%d\n",ret);return 0;
}

运行结果:

模拟实现strcmp

string1小于string2时返回值小于0

string1等于string2时返回值等于0

string1大于string2时返回值大于0

该比较方法为比较等同位置的字符的ASCLL值的大小

若相同的话比较下一个字符的ASCLL值的大小

#include<stdio.h>
#include<assert.h>int my_strcmp(const char* str1, const char* str2)
{assert(str1 && str2);while (*str1 == *str2&&*str1!='\0')//如果*str1和*str2相等且不等于'\0'时进行循环往下查找不相等的位置{str1++;str2++;}return *str1 - *str2;//两个字符的ASCLL值相减比较大小
}
int main()
{char arr1[] = "zhangsan";char arr2[] = "lisi";int ret = my_strcmp(arr1, arr2);printf("%d\n", ret);return 0;
}

运行结果:

三.长度受限制的字符串函数介绍

1.strncpy字符串拷贝(能设置要拷贝的字符个数)

#include<stdio.h>
#include<string.h>
int main()
{char arr1[20] = "abcde";char arr2[20] = { 0 };strncpy(arr2, arr1, 4);printf("%s\n", arr2);return 0;
}

运行结果:

模拟实现strncpy

#include<stdio.h>
#include<assert.h>char* my_strncpy(char* dest, const char* str, size_t count)//该count的单位为字节
{assert(dest && str);char* ret = dest;while (count--)//循环的次数即为要赋值的个数{*dest++ = *str++;}return ret;
}
int main()
{char arr1[20] = "abcde";char arr2[20] = { 0 };my_strncpy(arr2, arr1, 4);printf("%s\n", arr2);return 0;
}

2.strncat 附加一个字符串(可指定要附加的大小)

#include<stdio.h>
#include<string.h>
int main()
{char arr1[20] = "Hello ";char arr2[20] = "World and Earth";strncat(arr1, arr2, 5);printf("%s\n", arr1);return 0;
}

运行结果:

模拟实现strncat

#include<stdio.h>
#include<assert.h>
char* my_strncat(char* dest, const char* str, size_t count)
{assert(dest && str);char* ret = dest;while (*dest)//找到'\0'的位置{dest++;}while (count--)//循环执行的次数{*dest++ = *str++;}return ret;
}
int main()
{char arr1[20] = "Hello ";char arr2[20] = "World and Earth";my_strncat(arr1, arr2, 5);printf("%s\n", arr1);return 0;
}

3.strncmp 字符串比较(可设置比较的个数)

#include<stdio.h>
#include<string.h>
int main()
{char arr1[] = "zhangsan";char arr2[] = "zhangyi";int ret1 = strncmp(arr1, arr2, 5);int ret2 = strncmp(arr1, arr2, 6);printf("%d\n", ret1);printf("%d\n", ret2);return 0;
}

运行结果:

模拟实现strncmp

#include<stdio.h>
#include<assert.h>int my_strncmp(const char* str1, const char* str2, size_t count)
{assert(str1 && str2);while (count&&*str1==*str2)//如果*str1和*str2相等且不等于'\0'时进行循环往下查找不相等的位置{count--;str1++;str2++;}if (count == 0)//如果循环的次数全部执行说明要比较的字符串相等return 0;return *str1 - *str2;//ASCLL值相减比较大小
}
int main()
{char arr1[] = "zhangsan";char arr2[] = "zhangyi";int ret1 = my_strncmp(arr1, arr2, 5);int ret2 = my_strncmp(arr1, arr2, 6);printf("%d\n", ret1);printf("%d\n", ret2);return 0;
}

四.字符串查找

1.strstr子字符串的查找

#include<stdio.h>
#include<string.h>
int main()
{char arr1[] = "abcdefabcd";char arr2[] = "efa";char* ret = strstr(arr1, arr2);printf("%s\n", ret);return 0;
}

运行结果:

模拟实现strstr

该函数的第一个参数为母字符串的首元素地址,第二个参数为子字符串的首元素的地址

#include<stdio.h>
#include<assert.h>char* my_strstr(const char* str1, const char* str2)
{assert(str1 && str2);char* ret = str1;//记录开始比较的地址while (*str1 == *str2 && *str2 != '\0')//寻找子字符串{str1++;str2++;}if (*str2 == '\0')//找到了return ret;ret++;if (*str1 == '\0')//找不到return NULL;
}
int main()
{char arr1[] = "abcdefabcd";char arr2[] = "efa";char* ret = strstr(arr1, arr2);printf("%s\n", ret);return 0;
}

2.strtok字符串拆分

strtok能将规定的字符转换为'\0'

#include<stdio.h>
#include<string.h>
int main()
{char arr1[] = "zxcvbnm@qq.com";const char* str = "@.";//能被转为'\0'char arr2[20] = { 0 };strcpy(arr2, arr1);char* ret = NULL;for (ret = strtok(arr2, str); ret != NULL; ret = strtok(NULL, str))//for循环中第一个表达式找到arr1首元素的地址,该字符串到了'\0'才会停下,第3个表达式的NULL能找到上一次记录的地址{printf("%s\n", ret);}return 0;
}

五.错误信息报告

1.strerror发现错误的信息

#include<stdio.h>
#include<string.h>
int main()
{int* p = (int*)malloc(_CRT_INT_MAX);//用malloc动态申请_CRT_INT_MAX个字节的内存,_CRT_INT_MAX值太大内存不足,产生错误 if (p == NULL)//如果为空指针的话会将错误码返回到errno中{printf("%s\n", strerror(errno));//用strerror接受错误的信息并打印出来}return 0;
}

运行结果:

内容到这里结束了,如果感觉有帮助的话点个赞呗

常用字符串函数的使用相关推荐

  1. SQL常用字符串函数

    SQL常用字符串函数 一.字符转换函数 1.ASCII() 返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用''括起来,但含其它字符的字符串必须用''括起来使用 ...

  2. 字符串与字符串函数 - 字符串输出 常用字符串函数

    一.字符串输出函数 1.puts() 函数 使用较为简单,只需要将字符串的地址作为参数进行传递即可. #include <sthio,h> #define DEF "I am a ...

  3. Matlab命令集--常用字符串函数

    Matlab命令集--常用字符串函数 常用函数 eval  :运行字符串表示的表达式 char  :将数组变成字符串 double:将数字字符串变成数字 字符串操作 deblank :去掉字符串末尾的 ...

  4. php如果字符串有1 3 5,PHP常用字符串函数小结

    PHP常用字符串函数小结 来源:程序员人生   发布时间:2015-01-22 09:02:32 阅读次数:1594次 1.判断类型的函数 is_bool() //判断是不是为布尔型 is_float ...

  5. C语言常用字符串函数

    概括 代码 #include<stdlib.h> #include<stdio.h> #include<string.h> int main() {//常用字符串函 ...

  6. 写出python字符串三种常用的函数或方法_python中几种常用字符串函数

    1.lower()把所有字符换成小写 2.upper()把所有字符换成大写 3.swapcase()大小写互换 4.title()把每个单词首字母大写,他是以所有英文字母的字符来区别是否为一个单词的, ...

  7. C语言常用字符串函数strlen、strcpy、strcat、strcmp、strchr

    C语言常用字符串函数,求串长strlen(char *s).串复制strcpy(char *s1,char *s2).串连接strcat(char *s1,char *s2).串比较strcmp(ch ...

  8. GreenPlum常用字符串函数

    GreenPlum常用字符串函数如下: 测试代码: eda_gp=> select 'green'||'plum' as dbname;dbname -----------greenplum ( ...

  9. 用c语言模拟实现常用字符串函数

    目录 一.常用字符串函数介绍 1.strlen 2. strcpy 3.strcmp 4.strcat 5.strstr 二.模拟实现常用字符串函数 1.strlen 2.strcpy 3.strcm ...

  10. php 常用字符串函数

    以下列出开发中常用的字符串函数,以供自己需要的时候查阅 长度 strlen($string):得到字符串长度 字符串查找 strpos($string, $search[, $offset]):在指定 ...

最新文章

  1. maven环境快速搭建
  2. mysql,int(5)、int(10)啥区别联系
  3. 814:The Letter Carrier's Rounds
  4. ZJOI2012网络 题解报告【LCT】
  5. redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题...
  6. 速学c++(2)-helloworld工程
  7. android studio vfs,Android Studio:尝试呈现XML布局的InvalidVirtualFileAccessException
  8. Linux启动更新命令,Linux更新和查询命令chkconfig详细介绍
  9. 日记背景 android,只是意外 - 用这些 APP 来记录生活,再也不用担心无法坚持写日记 - Android 应用 - 【最美应用】...
  10. 从零开始学习Sencha Touch MVC应用之十四
  11. Perl打造溯雪拙劣仿制品
  12. 5寸照片尺寸_证件照尺寸及更换背景颜色教程
  13. 撰写论文时如何复制参考文献公式----Mathpix及Mathtype教程
  14. visio UML图 视频学习
  15. 13家著名IT公司logo变迁史
  16. Js实现炫酷随机抽人
  17. 一键获取网页MP3音乐播放源文件
  18. python 给word动态添加水印
  19. 斐讯dns服务器未响应,斐讯k2无线网络初始密码是?
  20. 什么是淘宝私域流量?和公域流量流量有何区别?

热门文章

  1. Assets file ‘E:\*\*\*\obj\project.assets.json‘ not found.Run a NuGet package restore to generate
  2. 开发JAVA第一步,教你选好JSP虚拟空间
  3. 剑指offe 替换空格
  4. 射频day7:微带线;带状线
  5. 商场抽奖软件 android,召唤抽奖系统
  6. 【数据库】数据库入门(二): 关系型数据库
  7. java计算机毕业设计基于安卓Android的城市公交查询app(源码+系统+mysql数据库+Lw文档)
  8. SpringAop两种配置:xml配置和注解方式
  9. 深入理解RunLoop
  10. 技术、商业和创新的彼岸:“被折叠”的三星