文章目录
⭐一、strcpy函数
1.函数形式以及功能介绍
函数形式:char* strcpy(char * destination, const char * source );
功能:将一个源字符串的内容完整拷贝到目标字符串中
在拷贝的过程中需要注意以下几点内容:
- 源字符串必须以 ‘\0’ 结束。
- 会将源字符串中的 ‘\0’ 拷贝到目标空间。
- 目标空间必须足够大,以确保能存放源字符串,否则就会发生报错。
- 目标空间必须可修改,不能加const修饰。
2.函数的使用
在使用时需要包含头文件:#include<string.h>
3.模拟实现
了解了strcpy的功能以及使用,下面我们就模拟实现一下该函数
char* my_strcpy(char* dest, char* src)
{
//记录目标空间的起始位置
char* p = dest;
assert(dest && src);
while (*dest++ = *src++)
{
;
}
return p;
}
⏱️二、strcat函数
1.函数形式以及功能介绍
函数形式:char * strcat ( char * destination, const char * source );
功能:将一个字符串连接到另一个字符串的末尾。
使用时注意以下几点:
- 源字符串必须以 ‘\0’ 结束。
- 目标字符串中也得有 \0 ,否则没办法知道追加从哪里开始。
- 目标空间必须有足够大,能容纳下源字符串的内容。
- 目标空间必须可修改,不能加const修饰。
2.函数的使用
在使用前也需包含头文件:#include<string.h>
3.模拟实现
char* my_strcat(char* dest, char* src)
{
assert(dest && src);
// 记录目标空间的地址
char* p = dest;
// 找到目标空间'\0'的位置
while (*dest != '\0')
{
dest++;
}
// 完成字符串追加功能
while (*dest++ = *src++)
{
;
}
return p;
}
🎈三、strcmp函数
1.函数形式以及功能介绍
函数形式:int strcmp ( const char * str1, const char * str2 );
功能:用于比较两个字符串的大小关系(逐个字符进行比较它们的ASCII码值)
• 当第一个字符串大于第二个字符串时,返回 >0 的数字
• 当第一个字符串等于第二个字符串时,返回 0
• 当第一个字符串小于第二个字符串时,返回 <0 的数字
2.函数的使用
在使用前包含头文件:#include<string.h>
3.模拟实现
int my_strcmp(const char* str1, const char* str2)
{
assert(str1 && str2);
while (*str1 == *str2)
{
if (*str1 == '\0')
{
return 0;
}
str1++;
str2++;
}
return *str1 - *str2;
}
🎉四、strncpy函数 — 长度受限字符串拷贝
1.函数形式以及功能介绍
函数形式:char * strncpy ( char * destination, const char * source, size_t num );
功能:将一个字符串的前 num 个字符复制到另一个字符串中
使用时需要注意:如果源字符串的长度小于num,则拷贝完源字符串之后,在目标字符串的后边追加0,直到num个。
2.函数的使用
🎡五、strncat — 长度受限字符串拼接
1.函数形式以及功能介绍
函数的形式:char * strncat ( char * destination, const char * source, size_t num );
功能:将源字符串的前num个字符追加到目标字符串的末尾,再追加⼀个 \0 字符
注意:如果源字符串的长度小于num的时候,只会将字符串中到 ‘\0’ 的内容追加到目标字符串的末尾
2.函数的使用
🎄六、strncmp — 长度受限字符串比较
1.函数形式以及功能介绍
函数形式:int strncmp ( const char * str1, const char * str2, size_t num );
功能:比较str1和str2的前num个字符,相等就继续往后⽐较,最多比较num个字符
返回值和strcmp函数一样
2.函数的使用
🚀七、strstr函数
1.函数形式以及功能介绍
函数形式:char * strstr ( const char * str1, const char * str2);
功能:函数返回字符串str2在字符串str1中第⼀次出现的位置
2.函数的使用
3.模拟实现
char* my_strstr(const char* str1, const char* str2)
{
assert(str1 && str2);
char* s1 = NULL;
char* s2 = NULL;
char* cur = str1;
//如果目标字符串为空,则返回源函数的地址
if (*str2 == '\0')
{
return (char*)str1;
}
while (*cur)
{
s1 = cur;
s2 = str2;
while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return (char*)cur;
}
cur++;
}
return NULL;
}
🏠八、strtok函数 — 字符串分割函数
1.函数形式以及功能介绍
函数形式:char * strtok ( char * str, const char * sep);
功能:将一个字符串分割成多个子字符串,每次调用返回一个子字符串。
使用时需要注意以下几点:
- strtok 会从字符串 str 的开头开始,查找第一个不在分隔符字符串中的字符
- 将找到的分隔符字符替换为空字符(\0),从而将字符串分割成两部分
- 从第二次调用开始,str 必须传入 NULL,因为strtok 会从上次保存的位置继续查找
- 如果没有更多的子字符串,则返回 NULL。
2.函数的使用
🏝️九、strerror函数
1.函数形式以及功能介绍
函数形式:char * strerror ( int errnum );
功能:把参数部分错误码对应的错误信息的字符串地址返回来。