首页 > 编程知识 正文

C语言 strcpy 函数的实现及注意点,left函数注意点

时间:2023-05-05 01:00:26 阅读:240420 作者:1727

1、 strcpy 函数原型

char * strcpy(char* str1, const char* str2);

2、不使用库函数实现 strcpy 功能 // C语言 版本#include <stdio.h>char* MyStrcpy(char* str1, const char* str2){ char* temp = str1; if (NULL == str1 || NULL == str2) { printf("Argument error!"); return NULL; } while (*str2 != '') { *str1++ = *str2++; } *str1 = ''; str1 = temp; return str1;}int main(){ char str1[20] = { 0 }; char* str2 = "String!"; MyStrcpy(str1, str2); printf("%sn", str1); return 0;}

运行结果:

3、注意点 函数参数如果是指针,并且作为输入参数,应该使用 const 修饰,防止指针在函数体内被修改;注意检查传入参数的有效性,注重代码的健壮性。函数参数检查的几种区别: 使用(!str1 || !str2)或者(str1 && str2),这实际上是类型的隐式转换,将 char* 转换为 bool 类型,这种形式虽然简洁灵活,但是会导致出错概率增大和维护成本升高。使用(str1 == 0 || str2 == 0),直接使用字面常量(本题中的0),会减少程序的可维护性,0虽然简单,但程序中可能出现很多处对指针的检查,万一出现手误,编译器不能发现,生成的程序内含逻辑错误,很难排除。而使用 NULL 代替0,如果出现拼写错误,编译器就会检查出来。使用 str == NULL ,如果在写的过程中漏写一个 = ,变成 str = NULL,编译器无法检测出错误,可能导致意想不到的错误。应该采用 NULL == str 这种方式,如果将表达式写成了赋值,编译器会马上报错。 注意保存原始的 str 值;注意添加字符串结束标志 ‘’ 。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。