C语言字符串标准库函数_标准库函数获得字符串前几个值_if_stay_here的博客-程序员秘密

技术标签: c语言  字符串  指针  

C语言字符串相关标准库函数

字符串操作<string.h>

size_t strlen(char const* s);

注意:返回值类型size_t是无符号类型,和int进行运算或比较时需要注意

char* strcpy(char* dst,char const* src);

将src复制到dst,需保证dst有足够容纳src的空间,防止溢出,返回dst。若dst和src重叠,结果未定义

char* strcat(char* dst,char const* src);

将src复制到dst后面,需保证空间充足,返回dst

int strcmp(char const* s1,char const* s2);

逐个比较s1,s2中字符的大小,s1<s2返回负数,s1>s2返回正数,
想等返回0。不相等时返回的不一定是-1和1,故返回值只能用来和0比较

char* strncpy(char* dst,char const* src,size_t len);

类似strcpy,全部复制。src长度小于len时,后面用NUL补全,否则不会在末尾自动添加NUL,重叠未定义

char* strncat(char* dst,char const* src,size_t len);

类似strcat,最多复制len个字符,结尾自动添加NUL

int strncmp(char const* s1,char const* s2);

只比较前n位

char* strchr(char const* str,int ch);

返回ch在str中第一次出现的地址

char* strrchr(char const* str,int ch);

最后一次出现

char* strpbrk(char const* str,char const* group);

group中任意一个字符在str中第一次出现的地址

char* strstr(char const* s1,char const* s2);

子串s2在s1中第一次出现的地址

size_t strspn(char const* str,char const* group);

匹配计数

size_t strcspn(char const* str,char const* group);

不匹配计数

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

分割,标记。注意会改变字符串,会保存参数的局部状态信息,不能同时解析多个字符串。
使用示例:

void print_tokens( char *line )
{
    
	static	char	whitespace[] = " \t\f\r\v\n";
	char	*token;
	
	for( token = strtok( line, whitespace );
	    token != NULL;
	    token = strtok( NULL, whitespace ) )
		printf( "Next token is %s\n", token );
}

char* strerror(int error_number);

接收错误码作为参数,返回指向描述错误信息的字符串的指针

字符操作<ctype.h>

函数 满足条件返回真
isdigit 十进制数字0~9
isxdigit 十六进制数字,0~9,a~f,A~F
isupper 大写字母A~Z
islower 小写字母a~z
isalpha 英文字母a~z,A~Z
isalnum 字母或数字a~z,A~Z,0~9
ispunct 标点,不属于字母或数字的图形字符
isgraph 图形字符
isprint 可打印字符
isspace 空白字符
iscntrl 控制字符

int tolower(int ch); 转小写

int toupper(int ch); 转大写

使用ctype库函数判断字符类型可提高可移植性

内存操作

void* memcpy(void* dst,void const* src,size_t len);

重叠未定义

void* memmove(void* dst,void const* src,size_t len);

能正确处理dst和src重叠的情况

int memcmp(void const* a,void const* b,size_t len);

void* memchr(void const* a,int ch,size_t len);

void* memset(void* a,int ch,size_t len);

把a开始的len个字节初始化为ch

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/if_stay_here/article/details/111861799

智能推荐

如何用python下载瓦片(天地图,谷歌或者其它网站)并拼接_countsun的博客-程序员秘密

分两步做这些工作前,先下个pythonpython 3.7版本下载地址https://pc.qq.com/detail/5/detail_24685.html腾讯下载 还是很不错的再来个 Visual Studio Codehttps://pc.qq.com/detail/16/detail_22856.html断点调试比较简单一点,报错了可以百度第一步下载图片(下面这个程...

同级目录排序问题,置顶、置底、上移、下移 Java_qq_30801117的博客-程序员秘密

参考代码实现如下(还需优化):```javapublic class SortUtils { // 当前数据节点 private BusinessSystemFunctionData current; // 兄弟节点数据 private List&lt;BusinessSystemFunctionData&gt; brother; //以当前节点分割,当前之前的数据 private List&lt;BusinessSystemFunctionData.

python的Entry传参方法_python entry传入int_weixin_38180316的博客-程序员秘密

方法1;通过textvariable属性绑定StringVar()对象参数。from tkinter import StringVarimport Tkintervar=StringVar()root=tkinter.Tk('登录test')win=tkinter.Entry(root,show=None,textvariable=var)print(var)方法2;通过lambda 函数传参,有一次感受到了lambda函数的神奇,后续考虑使用匿名函数传参??from tkinter im

windows提取exe资源_提取exe bin_等风来不如迎风去的博客-程序员秘密

-rc文件需要 打包好的资源文件打算从exe里提取

antd 表格树如何展开_ant-design-pro protable 树形表格默认展开_weixin_39654352的博客-程序员秘密

Protable是在antd 的 table 上进行了一层封装,antd -table中有的属性它都支持. 当表格数据中有children字段,table会默认生成树形可展开表格,有时候需要一开始就默认展开,文档有一个属性defaultExpandAllRows默认展开所有行,但是设置这个之后并没有生效,原因是这个属性只在初始的时候加载一次,一般数据是从后台请求的,当时数据还没回来,数据回来时这...

CentOS7.4 mysql-5.7.21 多实例一键安装_chuanghua8764的博客-程序员秘密

groupadd mysql useradd -g mysql -M -s /sbin/nologin mysql mkdir -p /web mkdir -p /web/server cd wget https://dev.mysql.com/get/Downloads/MySQL-5....

随便推点

RSA加密、解密、签名、验签(验证签名)&RSA算法原理_rsa签名_冯小裁缝的博客-程序员秘密

参考链接:https://www.jianshu.com/p/8dc4a5f64e06https://www.cnblogs.com/pcheng/p/9629621.html首先,加密:加密是为了防止信息被泄露;签名:签名是为了防止信息被篡改。一、RSA加密简介RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密;是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(

由于重写Raid造成ESXi6.7存储名称丢失数据文件不能访问的问题解决(第一篇)(修改)_esxi 数据存储丢失_hhaiant的博客-程序员秘密

选用putty.exe工具SSh连接ESXi主机。(如果连接出错,进入ESXi主机参数设置查看设置如下图)2、输入ESXi主机IP地址进行连接,下一步输入账号密码。3、[[email protected]:~] fdisk -l4、[[email protected]:~] esxcli storage filesystem list5、[r[email protected]:~] esxcfg-volume -l6、[[email protected]:~] esxcfg-vol

postcss-plugin-px2rem文档_和尚敲代码的博客-程序员秘密

官方地址:https://www.npmjs.com/package/postcss-plugin-px2rem一下为相关信息的配置说明:

RabbitMQ实现消息队列延迟功能_rabbitmq延迟消息_pan_junbiao的博客-程序员秘密

要实现延迟功能,一般使用RabbitMQ 的消息队列延迟功能,即采用官方提供的插件 “rabbitmq_delayed_message_exchange” 来实现。但RabbitMQ 版本必须是 3.5.8 以上才支持该插件,否则得用其“死信”功能。1、安装RabbitMQ延迟插件(1)检查插件使用 rabbitmq-plugins list命令用于查看RabbitMQ安装的插件。打开一个新的cmd窗口(按快捷键“Win+R”,输入“cmd”)。运行命令:rabbitmq-plug...

APP加固技术历程及未来级别方案:虚机源码保护_编码美丽的博客-程序员秘密

注:本文转自顶象科技,加固新技术来源于顶象:https://www.dingxiang-inc.com传统App加固技术,前后经历了四代技术变更,保护级别每一代都有所提升,但其固有的安全缺陷和兼容性问题始终未能得到解决。而下一代加固技术—虚机源码保护,适用代码类型更广泛,App保护级别更高,兼容性更强,堪称未来级别的保护方案。(加固技术发展历程)第一代加固技术—动态加载第一代Android加固技术

WPF 各种控件个人随笔_不秃头滴程序员的博客-程序员秘密

个人随笔,随时更新ComBox设置选择项的值:ComBox_Name.SelectedItem = x(0~n);这样就把选择项的值设为了选择项所使用的列表的某一项。获取选择项的值:x = (ComBox_Name.SelectedItem as 选择项所使用的列表).某一项例:前台:Set:combox_light.SelectedItem = HelthDataViewModel.Instance.LightTemplates.First(i =&gt; i.LightMul ==

推荐文章

热门文章

相关标签