[POINTERS ON C] 第九章字符串、字符和字节

[POINTERS ON C] 第九章字符串、字符和字节
1. 字符串

包括零个或多个字符
以 0 即 '\0'字节结尾
字符串长度不包括 NULL
包括在头文件 string.h 中

2. strlen

size_t
strlen( 
char   const   * string )
{
    
int  length;
    
for ( length  =   0 * string ++   !=   ' \0 ' ; length ++  )
    
return  length;
}

注意事项: 返回值为无符号整数. 禁止使用 if( strlen(x) - strlen(y) >= 0 )...

3. 不受限制的字符串函数

使用这些函数时, 程序员必须保证结果字符串不会溢出这块内存

char *strcpy( char *dst, char const *src ); //dst将会被修改, 不能使用字符串常量;         dst, src不能重叠
char *strcat( char *dst, char const *src ); //dst不能为NULL;         dst, src不能重叠
char *strcmp( char const *s1, char const *s2 ); //

4. 长度受限的字符串函数

char *strncpy( char *dst, char const *src, size_t len ); //strlen(src) > len, dst将用NUL填充到len长度, 但 strlen(dst) 不变
char *strncat( char *dst, char const *src, size_t len ); //总是在结果字符串后面添加NUL字节, 但 strlen(dst) 不变
char *strncmp( char const *s1, char const *s2, size_t len ); //

5. 字符串查找

char *strchr( char const *str, int ch ); //查找ch第一次(最左边)出现位置
char *strrchr( char const *str, int ch ); //查找ch最后一次(最右边)出现位置

char *strstr( char const *s1, char const *s2 ); //查找s2第一次出现的位置
char *strtok( char *str, char const *sep ); //原理是将sep用NULL替换

char       *strpbrk( char const *str, char const *group ); //查找 str 中的字符第一次在字符串中出现的位置, 返回指针
size_t strcspn( char const *str, char const *group ); //查找 str 中的字符第一次在字符串中出现的位置, 返回索引
size_t strspn( char const *str, char const *group ); //查找 str 中的字符第一次不在字符串中出现的位置, 返回索引

6. 错误信息

char *strerror( int error_number ); //

7. 字符操作

字符分类:int islower(int ch)
字符转换:int tolower( int ch )

8. 内存操作

字符串数据内部包括 0 时,用下面函数操作

void *memcpy( void *dst, void const *src, size_t length );
void *memmove( void *dst, void const *src, size_t length );
void *memcmp( void *dst, void const *src, size_t length );
void *memchr( void *dst, void const *src, size_t length );
void *memset( void *dst, void const *src, size_t length );

你可能感兴趣的:([POINTERS ON C] 第九章字符串、字符和字节)