

size_t strlen ( const char * str );
问题举例1:(参数指向的字符串必须要以 '\0' 结束)

问题举例2:(注意函数的返回值为size_t,是无符号的( 易错 ))

学会模拟实现 - strlen

学会模拟实现 - strlen()(使用指针减去指针的方式进行统计)

学会模拟实现 - strlen()(使用递归的方式进行统计)

char* strcpy(char * destination, const char * source );
将源指向的C字符串复制到目标指向的数组中,包括终止空字符(并在此停止)
问题举例1:(源字符串必须以 '\0' 结束) (会将源字符串中的 '\0' 拷贝到目标空间)

问题举例1:(目标空间必须足够大,以确保能存放源字符串)

学会模拟实现 - strcpy

学会模拟实现 - 进行简化

char * strcat ( char * destination, const char * source );
将两者连接在destination中形成。
错误代码和上面strlen是一个概念这里就不写了。
正确代码书写方式:

学会模拟实现 - strcat

int strcmp ( const char * str1, const char * str2 );
这个函数开始比较每个字符串的第一个字符。如果它们相等其他情况下,它继续使用以下对,直到字符不同或终止达到零字符
标准规定:
问题举例1:

正确书写方式:

学会模拟实现 - strcmp

学会模拟实现 - strcmp

char * strncpy ( char * destination, const char * source, size_t num );
Destination使用零填充,直到总共写入了num个字符

char * strncat ( char * destination, const char * source, size_t num );
null字符复制

int strncmp ( const char * str1, const char * str2, size_t num );

char * strstr ( const char *str1, const char * str2);
返回一个指向str1中第一个出现的str2的指针,如果str2不是str1的一部分,则返回一个空指针str1。

学会模拟实现 - strstr()

char * strtok ( char * str, const char * sep );
切分的字符串一般都是临时拷贝的内容并且可修改。)
strtok的正确使用方式:

strtok的正确使用 - 优化


| 函数 | 如果他的参数符合下列条件就返回真 |
| iscntrl | 任何控制字符 |
| isspace | 空白字符:空格‘ ’,换页‘\f’,换行'\n',回车‘\r’,制表符'\t'或者垂直制表符'\v' |
| isdigit | 十进制数字 0~9 |
| isxdigit | 十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F |
| islower | 小写字母a~z |
| isupper | 大写字母A~Z |
| isalpha | 字母a~z或A~Z |
| isalnum | 字母或者数字,a~z,A~Z,0~9 |
| ispunct | 标点符号,任何不属于数字或者字母的图形字符(可打印) |
| isgraph | 任何图形字符 |
| isprint | 任何可打印字符,包括图形字符和空白字符 |
void * memcpy ( void * destination, const void * source, size_t num );(内存块的拷贝)
memcpy的正确使用方式:

学会模拟实现 - memcpy()

void * memmove ( void * destination, const void * source, size_t num );
memmove的正确使用方式:

学会模拟实现 - memmove()
首先我们画图分析一下:如何才能正确的进行拷贝:

代码实现:

void * memcpy ( void * destination, const void * source, size_t num );
memcmp的正确使用方式:

void * memset ( void * ptr, int value, size_t num );
memset的正确使用方式:

