返回
从零开始:畅游C语言字符串模拟函数的奇妙世界
后端
2023-12-06 10:51:44
一、常用字符串函数介绍
1. strlen
strlen函数的作用是计算字符串的长度,即字符串中字符的个数。字符串的长度不包括字符串末尾的空字符'\0'。
2. strcpy
strcpy函数的作用是将一个字符串复制到另一个字符串中。需要注意的是,strcpy函数不会对目标字符串进行扩容,因此目标字符串必须有足够的空间来容纳源字符串。否则,可能会导致缓冲区溢出。
3. strcmp
strcmp函数的作用是比较两个字符串的大小。如果两个字符串相等,则返回0;如果第一个字符串大于第二个字符串,则返回正数;如果第一个字符串小于第二个字符串,则返回负数。
4. strcat
strcat函数的作用是将两个字符串连接起来。连接后的字符串保存在第一个字符串中,第二个字符串的内容会被覆盖。
5. strstr
strstr函数的作用是在一个字符串中查找另一个字符串。如果找到子字符串,则返回子字符串的起始地址;如果没有找到子字符串,则返回NULL。
二、模拟实现常用字符串函数
1. strlen
size_t my_strlen(const char *str) {
size_t len = 0;
while (*str != '\0') {
len++;
str++;
}
return len;
}
2. strcpy
char *my_strcpy(char *dest, const char *src) {
char *p = dest;
while (*src != '\0') {
*p++ = *src++;
}
*p = '\0';
return dest;
}
3. strcmp
int my_strcmp(const char *str1, const char *str2) {
while (*str1 != '\0' && *str2 != '\0') {
if (*str1 > *str2) {
return 1;
} else if (*str1 < *str2) {
return -1;
}
str1++;
str2++;
}
if (*str1 == '\0' && *str2 == '\0') {
return 0;
} else if (*str1 == '\0') {
return -1;
} else {
return 1;
}
}
4. strcat
char *my_strcat(char *dest, const char *src) {
char *p = dest;
while (*p != '\0') {
p++;
}
while (*src != '\0') {
*p++ = *src++;
}
*p = '\0';
return dest;
}
5. strstr
char *my_strstr(const char *str1, const char *str2) {
size_t len1 = my_strlen(str1);
size_t len2 = my_strlen(str2);
if (len2 > len1) {
return NULL;
}
for (int i = 0; i <= len1 - len2; i++) {
if (my_strncmp(str1 + i, str2, len2) == 0) {
return str1 + i;
}
}
return NULL;
}
结语
通过这篇教程,我们一起探索了C语言字符串模拟函数的奥秘,并提供了清晰易懂的代码示例。希望这些知识能帮助您在未来的编程实践中游刃有余地处理字符串。当然,学习是一个循序渐进的过程,如果您在练习中遇到任何问题或有更多疑惑,请随时提出,我将竭诚为您解答。