zoukankan      html  css  js  c++  java
  • sprintf、snprintf、strcpy、strncpy、memcpy 函数

    sprintf、snprintf、strcpy、strncpy、memcpy 函数

    sprintf函数

    int sprintf(char *buffer, const char *format, [argument] ... );
    
    • 功能:将格式化的数据写入某个字符串缓冲区
    • 入参:format,输出字符串的格式化列表,比如%d、%s、%c等
    • 入参:[argument]对应的不定参数列表,与printf类似
    • 出参:buffer,指向一段存储空间,用于存储格式化之后的字符串
    • 返回值:返回写入buffer的字符数,出错则返回-1

    snprintf函数

    snprintf是sprintf的安全版本

    int snprintf(char *buffer, size_t size, const char *format, [argument] ... );
    
    • 功能:有长度限制地,把格式化的数据写入某个字符串缓冲区
    • 入参:format,输出字符串的格式化列表,比如"%s %d %c"等
    • 入参:[argument],format对应的不定参数列表,与printf的不定入参类似
    • 入参:size,表示buffer指向存储空间的大小
    • 出参:buffer,指向一段存储空间,用于存储格式化之后的字符串
    • 返回值:返回写入buffer 的字符数,出错则返回-1
      • 如果 buffer 或 format 是空指针,且不出错而继续,函数将返回-1,并且 errno 会被设置为 EINVAL

    strcpy函数

    char *strcpy(char *dest, const char *src);
    
    • 功能:将参数src字符串拷贝至参数dest所指的地址,会自动给dest字符串补结束符’’;
    • 返回值:返回dest的字符串的起始地址;
    • 说明:如果参数dest所指向的内存空间不够大,可能会造成缓冲溢出的错误情况(同sprintf)。

    strncpy函数

    char *strncpy(char *dest, const char * src, size_t n);
    
    • 函数说明:strncpy()会将字符串src的前n个字符拷贝到字符串dest;
    • 返回值:返回字符串dest
    • 注意:strncpy()不会像strcpy那样向dest追加结束符,但是它可以拷贝结束符,结束符之后的字符不能够拷贝,src和dest所指向的内存区域不能重叠,且dest必须由足够大的空间放置n个字符

    memcpy函数

    void memcpy(void *dest, const void *src, size_t n);
    
    • 功能:将src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内
    • 返回值:返回一个指向dest的指针
    • 注意:src和dest所指向的内存区域不能重叠;与strcpy相比,memcpy并不是遇到结束符就停止拷贝,而是一定会拷贝完n个字节

    区别解析

    函数名称操作对象简单分析
    strcpy对字符串进行操作调用简单,效率较高
    sprintf操作对象可以是字符串,但不限于字符串,可以是任意基本类型需要对指定格式符并且进行格式转换,调用较为烦琐且效率不高
    memcpy对内存的拷贝,不考虑类型高效,但需指定拷贝内存的长度
  • 相关阅读:
    37. VUE — webpack 基本使用
    36.VUE — 认识 Webpack 和 安装
    4. SpringBoot配置文件—YAML语法讲解
    3. IDEA 快速创建SpringBoot程序
    6. Maven 添加 镜像一些特性
    35. JS 模块化开发
    2. SPringBoot 解析HelloWorld 程序
    1. Maven 创建 SpringBoot项目 — HelloWorld — 我是踩了非常多的坑! 才写出来的 开学不顺 但是收获很多!!!
    34. VUE 的 编译作用域 以及 slot作用域插槽(获取组件作用域中的数据)
    【洛谷 3366】最小生成树_Kruskal
  • 原文地址:https://www.cnblogs.com/chmod/p/15489925.html
Copyright © 2011-2022 走看看