C语言字符串函数介绍与模拟实现详解
简介
C语言中的字符串是以字符数组的形式保存的,而字符串函数则是对这些字符数组执行一些常见的字符串操作的函数库。本文将介绍常见的C语言字符串函数,并演示如何模拟实现这些函数。
常见字符串函数
strlen()
strlen()函数用于返回字符串的长度,即其包含的字符个数,不包括字符串末尾的'\0'。
示例:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello World";
int len1 = strlen(str1); // 11
char str2[] = "";
int len2 = strlen(str2); // 0
char str3[] = "abc\0def";
int len3 = strlen(str3); // 3
printf("%d %d %d", len1, len2, len3);
return 0;
}
strcpy()
strcpy()函数用于将源字符串复制到目标字符串中。
示例:
#include <stdio.h>
#include <string.h>
int main() {
char str1[20];
strcpy(str1, "Hello World"); // str1 = "Hello World"
char str2[5] = "abc";
strcpy(str2, "defghijklmn"); // str2 = "defghijklmn"
printf("%s\n%s", str1, str2);
return 0;
}
strcat()
strcat()函数用于将源字符串连接到目标字符串的末尾。
示例:
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello";
char str2[] = "World";
strcat(str1, str2); // str1 = "HelloWorld"
char str3[5] = "abc";
char str4[10] = "def";
strcat(str3, str4); // str3 = "abcdef"
printf("%s\n%s", str1, str3);
return 0;
}
strcmp()
strcmp()函数用于比较两个字符串的大小关系,并返回比较结果。
示例:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "abc";
char str2[] = "def";
char str3[] = "abcdef";
int result1 = strcmp(str1, str2); // -1
int result2 = strcmp(str1, str3); // -1
int result3 = strcmp(str3, str1); // 1
int result4 = strcmp(str3, str2); // 1
int result5 = strcmp(str1, str1); // 0
printf("%d %d %d %d %d", result1, result2, result3, result4, result5);
return 0;
}
字符串函数的实现
strlen()的实现
int my_strlen(const char *str) {
int len = 0;
while (*str != '\0') {
len++;
str++;
}
return len;
}
strcpy()的实现
char* my_strcpy(char *dest, const char *src) {
char *ret = dest;
while ((*dest++ = *src++) != '\0')
;
return ret;
}
strcat()的实现
char* my_strcat(char *dest, const char *src) {
char *ret = dest;
while (*dest != '\0') {
dest++;
}
while ((*dest++ = *src++) != '\0')
;
return ret;
}
strcmp()的实现
int my_strcmp(const char *str1, const char *str2) {
while (*str1 != '\0' && *str2 != '\0') {
if (*str1 != *str2)
return (*str1 > *str2) ? 1 : -1;
str1++;
str2++;
}
if (*str1 == '\0' && *str2 == '\0')
return 0;
else if (*str1 == '\0')
return -1;
else
return 1;
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言字符串函数介绍与模拟实现详解 - Python技术站