目录
一、strlen
//strlen的函数声明
size_t strlen(const char *str)
我们知道strlen函数用来计算字符串 str 的长度的,但是有些细节我们需要注意:
1:字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )。
2:参数指向的字符串必须要以 '\0' 结束;没有 '\0' 结束的话strlen会接着往下计算,直至内存中某处出现'\0'(这时strlen返回的值是随机值)。
3:注意函数的返回值为size_t,是无符号的。
strlen的模拟实现:
#define _CRT_SECURE_NO_WARNINGS
//模拟实现strlen
#include <stdio.h>
//当我们不需要改变指针指向的字符串内容时,最好在指针前加const
size_t my_strlen(const char* str)
{
int count = 0;
while (*str != '\0')//当指针指向'\0'就会停止计算
{
str++;
count++;
}
return count;
}
int main()
{
char ch[100] = { 0 };//不写下标则会报错——这会导致指针访问数组时越界
//ERR:Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted
scanf("%s", ch);
int ret = my_strlen(ch);
printf("%d", ret);
return 0;
}
运行结果:
二、strcpy
//strcpy的声明
char *strcpy(char *dest, const char *src);
C 库函数strcpy把 src 指针所指向的字符串复制到 dest 数组。
需要注意的是:
1、如果目标数组 dest 不够大,而src字符串的长度又太长,可能会造成缓冲溢出的情况。
2、src字符串必须以 '\0' 结束,且strcpy会将src字符串中的 '\0' 拷贝到目标空间。