新手小白必了解c语言之字符串函数

本篇介绍字符串库函数为

 

目录

引言 

一:字符串函数的头文件为#include

二:求字符串长度函数 (strlen)

1.函数介绍

2.函数使用举例

3.模拟实现 

三:字符串复制函数(strcpy) 

1.函数介绍

2.函数使用举例

3.模拟实现 

四:字符串连接函数(strcat) 

1.函数介绍

2.函数使用举例

3.模拟实现 

五:字符串比较函数(strcmp) 

1.函数介绍

2.函数使用举例

3.模拟实现 

六: 字符串受限制函数(strncpy.strncmp,strncat)

1.函数介绍 

2.函数使用举例(举例介绍一个就行)

七:字符串寻找字符串函数 (strstr)

1.函数介绍

2.函数使用举例

3.模拟实现 

八: 字符串分割函数(strtok)

1.函数介绍

2.函数使用举例

九:字符串错误打印函数(strerror) 

1.函数介绍

2.函数使用举例

3.也可以使用perror函数来打印错误信息 

感谢观看


听说看到日落金山的人,接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧

引言 

1.c语言中字符串是一个特殊的存在,相关操作是由各式各样的字符串函数来实现的,接下来我们就讲解c语言中常见并且常用的字符串函数

2.

C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。

字符串常量 适用于那些对它不做修改的字符串函数(用const修饰)

一:字符串函数的头文件为#include <string.h>

二:求字符串长度函数 (strlen)

1.函数介绍

注:size_t表示无符号整数即unsigned int

(1) 字符串以  '\0' 作为结束标志, strlen函数返回的是在字符串中 '\0' 前面出现的字符个数 (不包
'\0' )
(2) sizeof计算的是整个字符串的大小,单位为字节,包含'\0'
2.函数使用举例
#include <stdio.h>
#include <string.h>
int main()
{char s[81]="abcdef";int len=strlen(s);printf("%d",len);//计算结果为6return 0;
}

 

3.模拟实现 
#include <stdio.h>
size_t my_strlen(char *s1)
{//方法为为遍历这个字符数组,直到'\0'size_t count=0;while(*s1!='\0'){count++;s1++;}return count;
}int main()
{char s[81]="abcdef";size_t ret=my_strlen(s);printf("%u",ret);return 0;
}

三:字符串复制函数(strcpy) 

1.函数介绍

(1) 这个函数会将字符串source复制到字符串destination,也将其'\0'复制过去

(2)字符串destination的空间必须足够大

(3)字符串source必须含字符串结束标志'\0'

2.函数使用举例
#include <stdio.h>
#include <string.h>
int main()
{char s1[81]="abcdef";char s2[81];strcpy(s2,s1);//将字符串s1的内容复制给字符串s2puts(s2);//字符串输出函数return 0;
}

 

 

3.模拟实现 
#include <stdio.h>
#include <string.h>
char * my_strcpy(char *des,const char *sou)
{//遍历字符串sou,直至'\0'char *ret=des;while(*des++=*sou++);return ret;
}
int main()
{char s1[81]="abcdef";char s2[81];my_strcpy(s2,s1);puts(s2);return 0;
}

四:字符串连接函数(strcat) 

1.函数介绍

 

(1) 这个函数会将字符串source连接到字符串destination的后面

(2)字符串destination的空间必须足够大

(3)字符串source必须含字符串结束标志'\0'

(4)尽量不要自己连接自己

2.函数使用举例
#include <string.h>
#include <stdio.h>
int main()
{char s1[81]="abc";char s2[81]="def";strcat(s1,s2);puts(s1);return 0;
}

 

3.模拟实现 
#include <string.h>
#include <stdio.h>
char *my_strcat(char *des,const char *sou)
{char *ret=des;while(*des!='\0')//遍历字符串des直至'\0'{des++;}
//遍历完des后,将字符串sou的内容复制给字符串deswhile(*des++=*sou++);return ret;
}
int main()
{char s1[81]="abc";char s2[81]="def";my_strcat(s1,s2);puts(s1);return 0;
}

五:字符串比较函数(strcmp) 

1.函数介绍

(1) 这个函数是用来比较两个字符串的大小的,从两个字符串的起始位置开始比较,相同则继续比较,不同则返回一个int 类型的值,直至'\0',如果比较完还是一样的话返回0

(2)比较规则:大写字母小于小写字母,小写字母之间根据小写字母的ASCII码值来比较

(3)返回值规则:

第一个字符串大于第二个字符串,则返回大于 0 的数字
第一个字符串等于第二个字符串,则返回 0
第一个字符串小于第二个字符串,则返回小于 0 的数字
2.函数使用举例
#include <string.h>
#include <stdio.h>
int main()
{char s1[81]="abc";char s2[81]="abe";int ret=strcmp(s1,s2);printf("%d\n",ret);return 0;
}

 

3.模拟实现 
#include <stdio.h>
#include <string.h>
int my_strcmp(const char *des,const char *sou)
{while(*des==*sou);{if(*des=='\0') return 0;des++;sou++;}if(*des>*sou) return 1;else if(*des<*sou) return -1;
}
int main()
{int ret=my_strcmp("abc","abd");printf("%d",ret);return 0;
}

六: 字符串受限制函数(strncpy.strncmp,strncat)

1.函数介绍 

 

 

 

 

(1) 通过与上面几个函数比较,参数只多了个size_t num,代表意思为只复制/比较/连接num个字符

(2)比较到出现另个字符不一样或者一个字符串结束或者num个字符全部比较完。

(3)如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。

2.函数使用举例(举例介绍一个就行)
#include <stdio.h>
#include <string.h>
int main()
{ char s1[81]="abcdef";char s2[81]="****";strncpy(s2,s1,3);puts(s2);
}

 

七:字符串寻找字符串函数 (strstr)

1.函数介绍

(1)此函数为字符串中寻找子字符串的函数 

2.函数使用举例
#include <stdio.h>
#include <string.h>
int main()
{char s1[]="abcdefabcdef";char s2[]="def";char *ret=strstr(s1,s2);if(ret!=NULL){printf("%s\n",ret);}else{printf("找不到\n");}return 0;
}

 

3.模拟实现 

#include <stdio.h>
char* my_strstr(char* str1, char* str2)
{char* cp = str1;char* s1 = cp;char* s2 = str2;while (*cp){s1 = cp;s2 = str2;while (*s1 && *s2 && *s1 == *s2){s1++;s2++;}if (*s2 == '\0')return cp;cp++;}return NULL;
}
int main()
{char s1[] = "abbbcdef";char s2[] = "bbc";char* ret = my_strstr(s1, s2);if (ret != NULL){printf("%s\n",ret);}else{printf("找不到\n");}return 0;
}

 

八: 字符串分割函数(strtok)

1.函数介绍

 

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

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

(3)strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注: strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。)

(4)strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。

(5)strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。

(6)如果字符串中不存在更多的标记,则返回 NULL 指针。

2.函数使用举例
#include <stdio.h>
#include <string.h>
int main()
{char s1[]="abcdef@year.net";char s2[81];strcpy(s2,s1);char sep[]="@.";//方法一: //char *ret=strtok(s2,sep);//printf("%s\n",ret);//ret=strtok(NULL,sep);//printf("%s\n",ret);//ret=strtok(NULL,sep);//printf("%s\n",ret);//方法二: char *ret=NULL;for(ret=strtok(s2,sep);ret!=NULL;ret=strtok(NULL,sep)) {printf("%s\n",ret);}return 0;
}

 

九:字符串错误打印函数(strerror) 

1.函数介绍

(1) 返回错误码,所对应的错误信息。

(2)库函数在执行过程中,发生了错位会将一个错误码存放在errno这个变量中,errno是c语言提供的一个全局的变量

2.函数使用举例

3.也可以使用perror函数来打印错误信息 

感谢观看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/327287.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java BIO、NIO、AIO、Netty知识详解(值得珍藏)

1. 什么是IO Java中I/O是以流为基础进行数据的输入输出的&#xff0c;所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。 在Java类库中&#xff0c;IO部分的内容是很庞大的&#xff0c;因为它涉及的领…

计算机环境安全

操作系统安全----比如windows,linux 安全标识--实体唯一性 windows---主体&#xff1a;账户&#xff0c;计算机&#xff0c;服务 安全标识符SID-Security Identifier 普通用户SID是1000&#xff0c;管理用SID是500 linux---主体&#xff1a;用户&#xff0c;用户组&#xf…

Next.js 第一次接触

因为需要整个漂亮的在线文档&#xff0c;所以接触了next.js&#xff0c;因为对前端js本身不够熟悉&#xff0c;别说对react.js 又不会&#xff0c;时间又不允许深入研究&#xff0c;所以&#xff0c;为了加一个导航菜单&#xff0c;极其痛苦。 有点小bug&#xff0c;不过不影响…

体系化的进阶学习内容

UWA学堂&#xff1a;传播游戏行业的体系化的进阶学习内容。UWA学堂作为面向开发者的在线学习平台&#xff0c;目前已经上线272门课程&#xff0c;涵盖了3D引擎渲染、UI、逻辑代码等多个模块&#xff0c;拥有完整的学习体系&#xff0c;一直致力于为广大的开发者提供更丰富、更优…

云服务器安装mysql全流程

一、下载安装包 官网链接&#xff1a;MySQL :: Download MySQL Community Server 选择适合自己版本和操作系统 二、安装包上传服务器 在本地终端执行scp命令 三、服务器上使用安装包 卸载旧版本 #检查是否之前安装过mysql服务 [lighthouseVM-24-3-opencloudos software]# r…

3D人体姿态估计(教程+代码)

3D人体姿态估计是指通过计算机视觉和深度学习技术&#xff0c;从图像或视频中推断出人体的三维姿态信息。它是计算机视觉领域的一个重要研究方向&#xff0c;具有广泛的应用潜力&#xff0c;如人机交互、运动分析、虚拟现实、增强现实等。 传统的2D人体姿态估计方法主要关注通…

OpenHarmony应用构建工具Hvigor的构建流程

前言 OpenHarmony 应用和服务使用 Hvigor 作为工程的构建工具。本篇文章将介绍 Hvigor 的构建流程&#xff0c;通过修改脚本配置使 Hvigor 执行自定义任务。 Hvigor 的构建流程 加载命令行参数和环境变量&#xff1b;初始化项目结构&#xff0c;创建 Project 和 Module 实例…

深度解析分布式算法:构建高效稳定的分布式系统

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

YOLOv5改进 | 卷积篇 | SAConv轻量化的可切换空洞卷积(附修改后的C3+Bottleneck)

一、本文介绍 本文给大家带来的改进机制是可切换的空洞卷积(Switchable Atrous Convolution, SAC)是一种创新的卷积网络机制,专为增强物体检测和分割任务中的特征提取而设计。SAC的核心思想是在相同的输入特征上应用不同的空洞率进行卷积,并通过特别设计的开关函数来融合这…

在 docker 容器中配置双网卡,解决通讯的问题

目录 1. 查看当前网络信息 2. 创建自定义网络桥 3. 创建双网卡模式 4. 删除默认网卡 已经创建好了的 Docker 容器&#xff0c;要修改它的IP比较麻烦&#xff0c;网上找了几种不同的方法&#xff0c;经过试验都没有成功&#xff0c;下面通过配置双网上来解决 IP 的问题。…

vue-video-player接入海康摄像头

需求 最近需要接入海康视频摄像头&#xff0c;然后把视频的画面接入到自己的网站系统中。以前对接过rtsp固定IP的显示视频&#xff0c;这次的不一样&#xff0c;没有了固定IP。海康的解决办法是&#xff0c;摄像头通过配置服务器到萤石云平台&#xff0c;然后购买企业版账号和…

CodeWave智能开发平台--03--目标:应用创建--06变量作用域和前后端服务逻辑

摘要 本文是网易数帆CodeWave智能开发平台系列的第08篇&#xff0c;主要介绍了基于CodeWave平台文档的新手入门进行学习&#xff0c;实现一个完整的应用&#xff0c;本文主要完成06变量作用域和前后端服务逻辑 CodeWave智能开发平台的08次接触 CodeWave参考资源 网易数帆Co…