彻底掌握C语言strcpy函数的用法

目录
  • 1.函数介绍
    • 1.1.函数接口
    • 1.2.函数分析
  • 2.库函数strcpy源代码
    • 2.1.库函数分析
  • 3.模拟实现strcpy函数
    • 3.1.模拟实现
  • 写在后面

strcpy函数详解如下

1.函数介绍

1.1.函数接口

char * __cdecl strcpy(char * dst, const char * src);

这里是库函数里面的函数定义接口。该函数作用是将一组字符串复制到另一组字符串中去,就是所谓的 复制字符串函数。

1.2.函数分析

1、这里是将源字符串拷贝到目标字符串空间中去。

2、源字符串必须以 ‘/0’ 结束。

3、拷贝会将源字符串中的 ‘\0’ 拷贝进去。

4、目标空间必须足够大,且必须可变。

图解分析:

2.库函数strcpy源代码

char * __cdecl strcpy(char* dst, const char* src)
{
		char * cp = dst;
 	 	while((*cp++ = *src++) != '\0')
 				;
 		return( dst )
 }

2.1.库函数分析

分析:

1、 这里 dst 就是指向目标字符空间的指针,所以不能用const 修饰,必须是可变的;src 是源字符串,源字符串可以用const 修饰。

2、 这里源字符串 src 结尾必须含有 ‘\0’ ,这样循环里的判断条件才能成立。

3、这里*cp++ = *strc++这种写法更加简便,缩短代码量。

3.模拟实现strcpy函数

3.1.模拟实现

char* my_strcpy(char* str2,const char* str1)
{
	char* first = str2;
	assert(str2 && str1);//这里注意,尽量把assert放在char*
	//first的下一行
	//有的编译器中若将assert放在最前面,可能无法编译,因为C语言规定变量的常见必须放在代码前面
	while (*str2++ = *str1++)
	{
 		 ;
	}
	return first;
}
int main(void)
{
	char ch1[] = "abcde";
	char ch2[] = "XXXXXXXXXXXX";
 	printf("%s\n", my_strcpy(ch2, ch1));//这里是链式访问
	//在一个函数里面去访问另一个函数的值,就是链式访问
}

分析总结:

1、尽量不要返回局部变量的地址。(因为局部变量在函数内部使用后:在出这个函数后,其局部变量的空间就会被销毁,就不会再指向这个函数之前使用的地址了,所以就无法访问到之前使用的地址,就会出现非法访问内存的错误)。

2、指针不知道赋什么值的时候,就给NULL。

3、指针使用完后,就给NULL。

写在后面

友友们,相聚的时刻总是短暂的,又到了说再见的时候啦~ 但是字符串这一块经常在面试的时候会出模拟实现某某字符串函数的面试题,因此我们不能只会平时利用头文件直接调用而不去摸清原理哈~ 要做到 摸清、拿捏、吃透 字符串函数。

以上代码均可运行,所用编译环境为 vs2019 ,运行时注意加上编译头文件#define _CRT_SECURE_NO_WARNINGS 1

到此这篇关于彻底掌握C语言strcpy函数的用法的文章就介绍到这了,更多相关C语言strcpy函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言中的strdup()函数和其与strcpy()函数的区别

    头文件: #include <string.h> 定义函数: char * strdup(const char *s); 函数说明:strdup()会先用maolloc()配置与参数s 字符串相同的空间大小,然后将参数s 字符串的内容复制到该内存地址,然后把该地址返回.该地址最后可以利用free()来释放. 返回值:返回一字符串指针,该指针指向复制后的新字符串地址.若返回NULL 表示内存不足. 范例 #include <string.h> main(){ char a[] = &

  • C语言strcpy库函数详解

    目录 C语言strcpy库函数的讲解 附1:MSDN关于strcpy库函数的简介 思路: 总结 C语言strcpy库函数的讲解 附1:MSDN关于strcpy库函数的简介 思路: 1.从上面的MSDN关于strcpy库函数的简介中,我们可以知道,传进函数的第一个参数是目标数组,也就是用来接收被拷贝的字符串,第二个参数是源头数组,也就是将这个参数的字符串拷贝到目标数组里面去.(一定要注意目标数组的空间大小一定要比源头数组的空间大小大,不然即使拷贝成功了也会报错!!!) 2.在我们自我实现strcp

  • C语言的strcpy函数你了解吗

    目录 strcpy 函数原型 参数讲解 返回值详解 函数详解 第二个注意点:目标空间必须足够大,以确保能存放源字符串 第三个注意点:目标空间必须可变 总结 strcpy 拷贝字符串到目标地址 函数原型 char *strcpy( char * destination, const char * source ) 参数讲解 参数 destination source 解释 目标字符串地址 以 Null 结尾的源字符串地址 返回值详解 这些函数中的每一个都返回目标字符串,没有返回值就是拷贝失败. 函

  • C语言不使用strcpy函数如何实现字符串复制功能

    Ⅰ )字符串复制函数 字符串复制是字符串操作中比较常用的操作之一.C语言库函数中提供的字符串复制函数是:strcpy函数.该函数的功能为:把源字符数组中的字符串复制到目的字符数组中,字符串结束标志"\0"也一同复制.下面实例为通过自定义函数完成字符串复制功能. Ⅱ)源代码: #include<stdio.h> void Copy_string(char* str1, char* str2); //函数声明 int main() { char str1[20]; char s

  • C语言中字符串常用函数strcat与strcpy的用法介绍

    strcpy原型声明:extern char *strcpy(char* dest, const char *src);头文件:#include <string.h>功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串.返回指向dest的指针.函数实现: 复制代码 代码如下: /********************** * C语言标准库函数strcpy的一种典型的工业级的

  • C语言 模拟实现strcpy与strcat函数详解

    目录 一.strcpy函数的介绍 1.函数的声明 2.函数功能与注意事项 3.函数的使用 二.模拟实现strcpy函数 1.模拟分析 2.模拟实现 三.strcat函数的介绍 1.函数的声明 2.函数功能与注意事项 3.函数的使用 四.模拟实现strcat函数 1.模拟分析 2.模拟实现 总结 这里有超详细的函数模实现分享,带大家一起来模拟实现这些函数,后续还将更新更多的函数模拟实现的文章. 一.strcpy函数的介绍 1.函数的声明 char* strcpy(char * destinatio

  • 详解C语言中strcpy()函数与strncpy()函数的使用

    C语言strcpy()函数:复制字符串 头文件:#include <string.h> 定义函数: char *strcpy(char *dest, const char *src); 函数说明:strcpy()会将参数src 字符串拷贝至参数dest 所指的地址. 返回值:返回参数dest 的字符串起始地址. 附加说明:如果参数 dest 所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况,在编写程序时请特别留意,或者用strncpy()来取代. 范例 #i

  • 彻底掌握C语言strcpy函数的用法

    目录 1.函数介绍 1.1.函数接口 1.2.函数分析 2.库函数strcpy源代码 2.1.库函数分析 3.模拟实现strcpy函数 3.1.模拟实现 写在后面 strcpy函数详解如下 1.函数介绍 1.1.函数接口 char * __cdecl strcpy(char * dst, const char * src); 这里是库函数里面的函数定义接口.该函数作用是将一组字符串复制到另一组字符串中去,就是所谓的 复制字符串函数. 1.2.函数分析 1.这里是将源字符串拷贝到目标字符串空间中去

  • GO语言延迟函数defer用法分析

    本文实例讲述了GO语言延迟函数defer用法.分享给大家供大家参考.具体分析如下: defer 在声明时不会立即执行,而是在函数 return 后,再按照 FILO (先进后出)的原则依次执行每一个 defer,一般用于异常处理.释放资源.清理数据.记录日志等.这有点像面向对象语言的析构函数,优雅又简洁,是 Golang 的亮点之一. 代码1:了解 defer 的执行顺序 复制代码 代码如下: package main import "fmt" func fn(n int) int {

  • Linux 中C语言getcwd()函数的用法

    Linux 中C语言getcwd()函数的用法 先来看该函数的声明: #include<unistd.h> char *getcwd(char *buf,size_t size); 介绍: 参数说明:getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小. 普通的用法会是这样: #define MAX_SIZE 255 char path(MAX_SIZE); getcwd(path,sizeof(path)); puts(path);

  • c语言abort函数实例用法

    1.abort函数的作用是异常终止一个进程,意味着abort后面的代码将不再执行. 2.当调用abort函数时,会导致程序异常终止,而不会进行一些常规的清除工作. 实例 #include <stdio.h> #include <stdlib.h> int main(void) { puts( "About to abort..../n" ); abort(); puts( "This will never be executed!/n" );

  • Go语言基础函数基本用法及示例详解

    目录 概述 语法 函数定义 一.函数参数 无参数无返回 有参数有返回 函数值传递 函数引用传递 可变参数列表 无默认参数 函数作为参数 二.返回值 多个返回值 跳过返回值 匿名函数 匿名函数可以赋值给一个变量 为函数类型添加方法 总结 示例 概述 函数是基本的代码块,用于执行一个任务 语法 函数定义 func 函数名称( 参数列表] ) (返回值列表]){ 执行语句 } 一.函数参数 无参数无返回 func add() 有参数有返回 func add(a, b int) int 函数值传递 fu

  • 彻底掌握C语言strcat函数的用法

    目录 1.函数介绍 1.1.函数接口 1.2.函数分析 1.3.函数的简单使用 2.库函数strcat源代码 库函数分析 3.模拟实现 strcat 函数 模拟实现 总结分析 写在后面 strcat函数详解如下 1.函数介绍 1.1.函数接口 char* __cdecl strcat (char * dst, const char * src); 这里是库函数里面的函数定义接口.这个函数是将字符串src连接到dst中去,就是连接字符串函数. 1.2.函数分析 分析: 1.dst 和 src 字符

  • C语言浅析函数的用法

    目录 问题引入 函数 C语言中函数的语法形式 问题 例子 函数的调用过程 函数声明 变量声明 数组声明 问题引入 有时候,我们经常需要在一个程序中,对一个数组进行 键盘输入,打印数组元素值. 有些代码块,功能是相同的,只有数组名和元素个数等参数不一样, 代码形式是一样的,对于同一功能而不同参数的代码块,那么咱就可以 将其封装成一个函数,如果您需要用到这样的功能或者代码块,那么我们 就不需要重复的去写代码块,我们只需要调用这个函数. 函数 函数是完成某个功能的指令序列的封装. 函数有什么特点: 相

  • 易语言lineto函数的用法总结

    是lineto函数的用法,隶属于gdi32.dll ! vb声明: VB声明 Declare Function LineTo Lib "gdi32" Alias "LineTo" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long 说明 用当前画笔画一条线,从当前位置连到一个指定的点.这个函数调用完毕,当前位置变成x,y点 返回值 Long,非零表示成功,零表示失败 参数表 参数 类型及说明 h

  • R语言-summary()函数的用法解读

    summary():获取描述性统计量,可以提供最小值.最大值.四分位数和数值型变量的均值,以及因子向量和逻辑型向量的频数统计等. 结果解读如下: 1. 调用:Call lm(formula = DstValue ~ Month + RecentVal1 + RecentVal4 + RecentVal6 + RecentVal8 + RecentVal12, data = trainData) 当创建模型时,以上代码表明lm是如何被调用的. 2. 残差统计量:Residuals Min 1Q M

  • C语言sqrt函数的实例用法讲解

    c语言sqrt函数的用法 sqrt函数用于计算一个非负实数的平方根. sqrt的函数原型: 在VC6.0中的math.h头文件的函数原型为double sqrt(double); 说明:sqrt即Square Root Calculations(平方根计算),通过这种运算可以考验CPU的浮点能力. 头文件:math.h 程序示例: #include <math.h> #include <stdio.h> int main(void) { double x = 4.0, result

随机推荐