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

智能推荐

Java程序员进阶全过程_普通网友的博客-程序员秘密

大家可以点击加入群欢迎大家加入Java架构开发766529531里面有Java高级大牛直播讲解知识点走的就是高端路线(如果你想跳槽换工作但是技术又不够或者工作上遇到了瓶颈我这里有一个JAVA的免费直播课程讲的是高端的知识点基础不好的误入哟只要你有1-5年的开发经验可以加群找我要课堂链接注意是免费的没有开发经验误入哦)介绍这本书名为《Java并发编程实践》有些抹杀了它的价值,其中并非只讲述了Java的多线程设施,对一般的并发编程的rationale也有相当透彻的阐述。...

Linux命令(五)如何给文件追加文本_使用命令追加文件内容“aaa”到 fi 文件中。_只要你一直跑的博客-程序员秘密

追加的方式有两种&lt;&lt;和tee,后者可以同时给多个文件追加,给一个文件追加一般用前一种参考资料:https://linuxize.com/post/bash-append-to-file/1. &gt;&gt;"&gt;&gt;"是redirect指令,常于echo,printf和cat指令一起用,操作方法:1.2 echo + &lt;&lt;echo "hello world " &gt;&gt; a.txt效果:echo用上-e参数可以在里面使用反转义字符echo -e

MongoDB 创建索引导致锁库_qiuhappysky的博客-程序员秘密

MongoDB 创建索引导致锁库背景描述两千多万数据,204G 的数据创建索引,执行 db.collection.ensureIndex({key:1}) 之后,是要锁库的,打开另一个终端,任何操作都不能执行。根本原因在数据库建立索引时,默认时 “foreground” 也就是前台建立索引,但是,当你的数据库数据量很大时,在建立索引的时会读取数据文件,大量的文件读写会阻止其他的操作...

解决qtcreator无法切换中英文编辑代码--Error:Could not decode “xxx.cpp“ with“UTF-8/System...“_Allen-陈理春的博客-程序员秘密

在qtcreator中打开Qt项目中的文件的时候,有时候文本编辑器中无法正常切换中英文输入,代码顶部会悬浮警告:Error:Could not decode “xxx.cpp” with"UTF-8/.........

JavaScript正则表达式总结_正则表达式 \number_Lemon{hello_word}的博客-程序员秘密

JavaScript正则表达式总结了解RegExp类型:ECMAScript通过RegExp类型来支持正则表达式。 var expression=/pattern/flags;正则表达式的模式(pattern)部分:可以是任何简单或复杂的正则表达式,可以包含字符类,限定符,分组,向前查找,反向引用。 关于正则表达式中各种特殊字符(如 ,^,$,\w,\b 等)的含义可以参考 MDN 正则表...

【Matlab】矩阵三角分解法求解方程组_weixin_34281477的博客-程序员秘密

%直接三角分解法function my_LU(a, b) n = length(a); l = zeros(n, n);%初始化 u = zeros(n, n); for i=1:n l(i,i) = 1; end u(1,1:n) = a(1,1:n); l(2:n, 1) = a(2:n, 1) ./ u(1,1); for...

随便推点

网站总是请求访问index.js.map,为什么会这样?_加载js时被自动加了.map_ThelianPro的博客-程序员秘密

网站总是请求访问index.js.map,为什么会这样?程序中并没有此链接呀!

JavaWeb学习笔记之JSP(二)_aoxue4024的博客-程序员秘密

1.1. JSP的指令:  1. 什么是JSP 指令?    JSP 指令: JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出, 而只是告诉引擎如何处理JSP页面中的其余部分。  2. JSP 指令有哪些?    在目前的JSP 2.0中,定义了page、include 和 taglib这三种指令。下面我们来介绍关于这些指令...

Piktochart(制作信息图表)_c1007726825的博客-程序员秘密

信息图表提高了可视化的数据,不但设计优美、效果显著,同时帮助我们更准确、更高效地了解信息,这信息图表应该怎么制作呢?今天就给大家推荐一个简单的制作信息图片的插件。Piktochart是一个来自马来西亚的非专业在线信息图片设计工具,不需要下载复杂的软件,也不需要繁琐的操作,只需要把数据提供给Piktochart,它会为你制作出最理想的图表。

从PHP的模板引擎看Discuz!模板机制_lampsunny的博客-程序员秘密

此文转自第七期,看看人家写的东西。鉴于对PHP的熟悉度及以后的维护,最近想把那个ASP的分类信息网改一下,前台基本改版 完毕,使用了fleaPHP提供的架构(对比了thinkPHP与fleaPHP最终还是选择了后者),其中的视图使用了smarty模板,平台环境使用 了APMServ,开发环境使用了Zend Development Environment,后台正在进行中,计划月底前完成。一、关于

IndexedDB入门_曾经沧海难为水-除却巫山不是云的博客-程序员秘密

IndexedDB介绍IndexedDB标准是HTML5官方认可的本地数据库解决方案。其目的不是取代服务器端数据库,它在一些特定场景下很有用:创建自给自足的离线应用比如页面可以在有网络连接的时候从服务器端数据库获取所需要的数据,然后将数据保存到本地数据库,以便离线时访问。优化性能一些应用使用大量的数据,如果持续地在需要

推荐文章

热门文章

相关标签