一、字符串操作<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


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)