C语言基础--常用字符串处理函数

本文详细介绍了字符串操作的基础知识,包括字符串长度计算、复制、连接、比较等,并深入探讨了受限字符串处理函数及字符串查找方法。此外,还介绍了内存操作如复制、比较等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1       字符串函数

字符数组初始化

char la_tmp[12] = “Hello Word!”;

1.1             字符串长度

size_t strlen( char const *string );

1.2             不受限制的字符串函数

1.2.1       复制字符串

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

函数返回第一个参数的拷贝

1.2.2       连接字符串

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

函数返回第一个参数的拷贝

1.2.3       字符串比较

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

如果s1小于s2,函数返回一个小于0的值。如果s1大于s2,函数返回一个大于0的值,否则返回0;

1.3             长度受限制的字符串处理函数

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

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

int  strncmp( char const *s1,  charconst *s2,  size_t len);

 

1.4             字符串查找基础

1.4.1       查找一个字符

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

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

第一个函数返回一个指向字符ch第一次出现的位置的指针;若找不到该字符返回NULL

第二个函数返回一个指向字符ch最后一次出现的位置的指针;若找不到该字符返回NULL

1.4.2       查找任意几个字符

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

1.4.3       查找一个子串

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

函数返回一个指向字符串s2第一次出现起始位置的指针;若找不到该字符返回NULL

1.5             高级字符串查找

1.5.1       查找标记

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

sep参数是字符串,定义了用作分隔符的字符集合,第一个参数指定一个字符串;

strtok找到str的下一个标记。并将其用NUL结尾,然后返回一个指向这个标记的指针;

 

如果strtok函数的第一个参数不是NULL,函数将找到字符串的第一个标记。strtok同时将保存他在字符串中的位置。

如果strtok函数的第一个参数是NULL,函数就在同一个字符串中从这个被保存的位置开始向前面一样查找下一个标记,

如果字符串中不存在更多的标记,返回NULL

在典型情况下,在第一次调用strtok时,向他传递一个指向字符串的指针,然后这个函数被重复调用(第一个参数为NULL),直到他返回NULL为止

如下示例:


 

INT8U la_tmp[30] ="Hello,Kim,Hao&are&you!";

INT8U la_cmp[] = ",&";

INT8U *lp_tmp;

 

for ( lp_tmp = strtok(la_tmp, la_cmp);lp_tmp != NULL; lp_tmp = strtok(NULL, la_cmp))

{

         uartPrintfArr(UART1,lp_tmp);

}

 

函数运行如下:

Hello

Kim

Hao

are

you!

 

1.6             字符操作

使用字符分类和转换函数可以提高函数的移植性


1.7             内存操作

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

遇到NUL字节时并不会停止操作;length为字节数,长度大于一个字节的数据,要确保把数量和数据类型的长度相乘;这个也可以复制结构或结构数组;

 

void *memcmp( void *dst, void const *src, size_t length );

参考 strncmp

 

void *memchr( void *dst, void const *src, size_t length );

参考 strnchr

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

常用在数组的初始化;

memset(la_tmp,0,sizeof(la_tmp));


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值