简述strcpy、sprintf、memcpy

简介: 简述strcpy、sprintf、memcpy

简述strcpy、sprintf、memcpy的区别

重点1

  1. strcpy、sprintf、memcpy的用法举例。
  2. sprintf(buff_a, "%s", buff_b)时与strcpy(buff_a, buff_b)效果相同。
//strcpy、sprintf
#include <stdio.h>
#include <string.h>
int main() {
  char buff_a[64] = {'z', 'z', 'z', 'z','z', 'z'};
  char buff_b[64] = {'a', 'b', 'c', '\0', 'd'};
  char *str = strcpy(buff_a, buff_b);  //str = abc 会将‘\0’一起复制过去
  printf("str=%s, buff_a= %s\n", str, buff_a);
  //buff_a= len:6 str:abc addr:0x7fff9bbe25a0
  int n = sprintf(buff_a, "len:%d str:%s addr:%p", 6, buff_b, buff_b);  
  printf("n=%d, buff_a= %s\n", n, buff_a);
}
代码执行结果:
str=abc, buff_a= abc
n=33, buff_a= len:6 str:abc addr:0x7fff9bbe25a0

重点2

memcpy 用法举例

//memcpy
#include <stdio.h>
#include <string.h>
int main() {
  char buff_a[64] = {'z', 'z', 'z', 'z','z', 'z'};
  char buff_b[64] = {'a', 'b', 'c', '\0', 'd'};
  memcpy(buff_a, buff_b, 3);
  printf("buff_a:%s\n", buff_a);  //buff_a:abczzz
  memcpy(buff_a, buff_b, 4);  //buff_a:abc 会将‘\0’一起复制过去
  printf("buff_a:%s\n", buff_a);
  return 0;
}
代码执行结果:
buff_a:abczzz
buff_a:abc

重点3

执行效率:memcpy > strcpy > sprintf

原因:memcpy是对内存进行操作,strcpy需要对‘\0’进行检查,sprintf需要进行类型转换。

充电站

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

相关文章
|
1月前
|
存储
strcpy、sprintf 与 memcpy 的区别
在 C 语言中,`strcpy`、`sprintf` 和 `memcpy` 是三个用于处理内存和字符串的函数,它们有不同的用途和特点
|
存储 Cloud Native Linux
C++ strcpy、sprintf与memcpy的区别
C++ strcpy、sprintf与memcpy的区别
|
C语言
自己实现strcpy和strlen函数
自己实现strcpy和strlen函数
85 0
C实现字符操作函数,strcpy, strcat, strcmp, memcpy
C实现字符操作函数,strcpy, strcat, strcmp, memcpy
48 0
|
6月前
strlen与sizeof 的基本用法
strlen与sizeof 的基本用法
42 0
|
C语言
【C语言进阶】-- 重点字符串函数内存函数及其模拟实现(strlen,strcmp,strcat...memcpy,memmove)
【C语言进阶】-- 重点字符串函数内存函数及其模拟实现(strlen,strcmp,strcat...memcpy,memmove)
|
编译器
strtok,strerror,memcpy,memmove,memcmp,memset详细解析及模拟实现
🐰strtok 🐰strerror 🐰memcpy 🐰模拟实现memcpy 🐰memmove 🐰模拟实现memmove 🐰memcmp 🐰memset
strlen, strcpy,strcmp,strcat,strncpy,strncmp,strncat,strst库函数的详细解析以及模拟实现
🐰strlen 🐰模拟strlen 🐰strcpy 🐰模拟strcpy 🐰strcat 🐰模拟strcat 🐰strcmp 🐰模拟strcmp 🐰strncpy 🐰strncat 🐰strncmp 🐰strstr 🐰模拟strstr
|
安全
strcpy和strncpy的使用以及strcpy的模拟实现(三种方法)
strcpy和strncpy的使用以及strcpy的模拟实现(三种方法)
209 0
strcpy和strncpy的使用以及strcpy的模拟实现(三种方法)
|
C语言
【C 语言】C 字符串 ( 表示方法 | strcpy | strcat | strlen | strcmp )(二)
【C 语言】C 字符串 ( 表示方法 | strcpy | strcat | strlen | strcmp )(二)
205 0
【C 语言】C 字符串 ( 表示方法 | strcpy | strcat | strlen | strcmp )(二)