Dotcpp  >  编程教程  >  字符串相关  >  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



知识点标签:字符串


本文固定URL:https://www.dotcpp.com/course/1007

算法竞赛教程
第一章 算法基础
第二章 搜索算法
第三章 排序算法
第四章 字符串相关
第五章 数学相关
第六章 动态规划
第七章 数据结构
第八章 图论
第九章 计算几何
第十章 其他算法
Dotcpp在线编译      (登录可减少运行等待时间)