一、strlen函数
1.1 strlen函数的作用
strlen函数的作用是计算字符串中字符的个数,字符串以 '\0' 作为结束标志,strlen函数返回的是字符串中 '\0' 前面出现的字符个数(不包含 '\0' )。同时strlen的返回值为size_t,是无符号整数
1.2 C语言模拟实现strlen,代码如下:
#include<stdio.h>
#include<string.h>
#include<assert.h>
size_t my_strlen(const char* str)
{
assert(str);//不允许传野指针
size_t count = 0;//计算字符的个数
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
char str[] = "ozhgor";
printf("%u\n", my_strlen(str));
return 0;
}
二、strcpy函数
2.1 strcpy函数的作用
将source中的字符串copy到destination中。需注意源字符串必须以 '\0' 结束;目标空间必须足够大,以确保能存放源字符串;目标空间必须可变。
2.2 C语言模拟实现strcpy,代码如下:
#include<stdio.h>
#include<string.h>
#include<assert.h>
char* my_strcpy(char* dest,const char* src)//将src中的字符copy到dest中,src不可修改所以加const
{
char* ret = dest;
assert(dest && src);
while (*dest++ = *src++)//当src中字符不为0时,进行copy字符动作,同时指针+1指向下一位,直到copy结束跳出循环,返回拷贝后的头指针
;
return ret;
}
int main()
{
char str1[20] = "";
char str2[] = "good morning";
printf("%s\n", my_strcpy(str1, str2));//将str2中的字符copy到str1中,并打印
return 0;
}
三、strcat函数
3.1 strcat函数的作用
字符串追加,将source中的字符串复制追加到destination中字符串的后面。
3.2 C语言模拟实现strcat,代码如下:
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest, const char* src)
{
assert(src && dest);
char* ret = dest;
while (*dest != '\0')
dest++;
while (*dest++ = *src++)
;
return ret;
}
int main()
{
char str1[20] = "good";
char str2[] = "morning";
my_strcat(str1, str2);
printf("%s\n", str1);
return 0;
}
四 、strcmp函数
4.1 strcmp函数的作用
写代码时不能直接比较两个字符串的大小,因为字符串代表首元素的地址,所以比较字符串大小都是用strcmp函数实现。str1>str2,返回正数; str1=str2,返回0;str1<str2,返回负数。
4.2 C语言模拟实现strcmp,代码如下:
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char* str1, const char* str2)
{
assert(str1 && str2);
while (*str1 == *str2)
{
if (*str2 =='\0')//注意这里不要写成"\0"
return 0;
str1++;
str2++;
}
return (*str1 - *str2);
}
int main()
{
char str1[] = "abcdef";
char str2[] = "abcdef";
int ret = my_strcmp(str1, str2);
if (ret > 0)
printf(">\n");
else if (ret == 0)
printf("=\n");
else
printf("<\n");
return 0;
}