strcpy实现

期望该函数满足以下要求:

 1. 逐个字符复制:直到遇到字符串结束符'\0'   2. 自动添加字符串结束符  
 3. 返回值为源字符串(dest)的地址

        

进行测试:

strncpy实现

构建strcncpy函数:

期望该函数满足以下要求: 1. 复制字符,直到复制n个或送到'\0'   2. 用'/0'填充剩余空间
                                          3. 返回值为源字符串(dest)的地址

下面进行测试.
测试用例分情况讨论:

情况1: "n" 小于"src"长度(指源字符串, 而不是地址,下文统称"src"):

如图, "str2"出现乱码, 这是因为在该函数在"src"未达到'\0'时, 不会自动添加'\0'.
因此, 对于空"dest", 若要打印正常的字符串, 需要手动添加'\0'

情况2: "n"大于"src"的长度:


如图, 将10个字符复制到"str2, "str2"的剩余空间用'0'填充

strcat实现 

strcat的实现期望:
1. 找到目标字符串的末尾('\0'位置)
2. 从源字符串开始复制字符,直到遇到源字符串的'\0'
3. 在连接后的字符串末尾添加'\0'
4. 返回目标字符串的地址

 

测试:

strncat实现


strncat的实现期望:

1.找到目标字符串的末尾('\0'位置)
2.从源字符串复制最多n个字符到目标字符串末尾
3.如果源字符串长度小于n,复制完源字符串后停止
4.在连接后的字符串末尾添加'\0'
5.返回目标字符串的地址


分情况测试:

1."n''小于"src"长度:

2."n"大于"src"长度:

strcmp实现



strcmp的实现期望:

1.逐个字符比较两个字符串
2.当遇到字符不相等或遇到'\0'时停止比较
3.返回比较结果:
    如果字符串相等,返回0
    如果第一个字符串大于第二个字符串,返回正数
    如果第一个字符串小于第二个字符串,返回负数

 

代码测试:

情况1: 两个字符串相同
/// a b c \0
/// a b c \0

strcmp的返回值是两个字符的ASCII差值. 这里, return: '\0' - '\0' ,  即返回0.  

情况2:两字符串比较过程中出现字符不相等的情况
/// a b c c  \0
/// a b c d  \0

返回值为负数-1('d'与'c'的差值为1)

情况3: 两字符串大部分字符相同, 但长度不一致

/// a b c \0
/// a b c d  \0

返回负数-100('d'与'\0'的差值为100)

strcnmp实现

strncmp的实现期望:
1.逐个字符比较两个字符串,最多比较n个字符
2.当遇到字符不相等、遇到'\0'或比较完n个字符时停止
3.返回比较结果(规则与strcmp相同)

测试不同于strcpy的特殊情况:

源码:

通过网盘分享的文件:strcat&strncat.c等3个文件
链接: https://pan.baidu.com/s/1mHanv57cP6YeX0pOE6uQPg 提取码: 1111

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐