我是靠谱客的博主 能干羽毛,最近开发中收集的这篇文章主要介绍写函数实现strcpy和strlen,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

实现strcpy

  • 调用库函数实现
#iinclude <string.h>
int main()
{
char arr[20];
strcpy(arr, "i love you!);
//把原字符串copy到目标串中
printf("%sn", arr);
system("pause");
return 0;
}
  • 自己写函数实现
#include <assert.h>
char *my_strcpy(char *dest, const char *src)
{
assert(dest != NULL);
//判断传过来的指针地址是否为空
assert(src != NULL);
int *ret = dest;
//把dest的首地址保存下来,用于返回main函数
while(*dest++ = *src++)
//一直往后把*src拷到*dest中,包括''
{
;
}
return ret;
//返回目标串的首地址
}
int main()
{
char arr[20];
printf("%sn", my_strcpy(arr, "i love you!"));
system("pause");
return 0;
}
  • 关于assert的补充介绍
    assert就是判断指针变量是否为空值,当不为空的时候,程序继续执行下一步,当为空值时,则会报错,结果会提示错误在哪一行。在上述的例子中,它类似于if语句,但if不会做任何判断。当取消assert时,直接加上#define NDEBUG
//#define NDEBUG
assert(dest != NULL);
assert(src != NULL);
//可以写为if
if (dest != NULL)
return;
if (src != NULL)
return; 
  • 关于const 介绍总结
//通过指针改变一个变量的值
int num = 10;
int *p = &num;
*p = 20;
//给变量加上const
const int num = 10;
//num收到const修饰,被保护
const int *p = &num;
//&num的类型相当于const int *
*p = 20;
//改变num值,会出现warning

(1)const 放在 * 左边

int const *p = &num;
const int *p = &num;
//等价

const修饰的是 *p ,指针变量可以被改变,但是指针指向的内容不可以通过指针来修改。
(2)const 放在 * 右边

int * const p = &num;

const修饰的是 p , 指针变量本身不能改变,但是指针指向的内容可以通过指针来改变。

实现strlen

  • 通过库函数实现
#include <string.h>
int main()
{
char *p = "abcdef";
int len = strlen(p);
printf("%dn", len);
system("pause");
return 0;
}
  • 自己写函数实现
#include <assert.h>
int my_strlen(const char *src)
//*src 不能被改变
{
assert(src != NULL);
//判断src不能为空值
int count = 0;
while(*src++)
{
count++;
//记录字符个数
}
return count;
}
int main()
{
char *p = "abcdef";
int len = my_strlen(p);
printf("%dn", len);
system("pause");
return 0;
}

最后

以上就是能干羽毛为你收集整理的写函数实现strcpy和strlen的全部内容,希望文章能够帮你解决写函数实现strcpy和strlen所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部