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));