sprintf()

函数原型:int sprintf( char *buffer, const char *format [, argument] ... )

功能介绍:

1、把一个字符串赋值(拷贝)给另一个字符串,如:

sprintf(str1, str2);//把字符串str2拷贝给str1

2、把其他类型的数据按某些要求(比如补零)转化为字符串

sprintf(str1,"%04X",str.mid(0,4).toInt(&is_ok,10));

snprintf()

与sprintf()的区别在于,snprintf()多一个参数,即需要制定要把多少数据存入buffer,一般填sizeof(buffer)

函数原型:int snprintf(char *str, size_t size, const char *format, ...)

memset()

函数原型:void *memset(void *s, int ch, size_t n);

功能介绍:

将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值,memset是以字节为单位,初始化内存块

1. 当初始化一个字节单位的数组时,可以用memset把每个数组单元初始化成任何你想要的值,比如,

  char data[10];  

  memset(data, 1, sizeof(data));    // right

  memset(data, 0, sizeof(data));    // right

而在初始化其他基础类型时,则需要注意,比如

  int data[10];

  memset(data, 0, sizeof(data));    // right

  memset(data, -1, sizeof(data));    // right

  memset(data, 1, sizeof(data));    // wrong, data[x] would be 0x0101 instead of 1

2. 当结构体类型中包含指针时,在使用memset初始化时需要小心。

比如如下代码中:
  struct Parameters {  
    int x;  
     int* p_x;  
  };  

  Parameters par;

  par.p_x = new int[10];

  memset(&par, 0, sizeof(par));

当memset初始化时,并不会初始化p_x指向的int数组单元的值,而会把已经分配过内存的p_x指针本身设置为0,造成内存泄漏。同理,对std::vector等数据类型,显而易见也是不应该使用memset来初始化的。
 

memcmp()

C 库函数 int memcmp(const void *str1, const void *str2, size_t n)) 把存储区 str1 和存储区 str2 的前 n 个字节进行比较

malloc、realloc、calloc 和 free

malloc、realloc 和 calloc 用于申请内存,free 用于释放内存
 
 
void* malloc (size_t size);

malloc:分配一块 size bytes 大小的内存,返回一个指向该内存开始的指针,该内存的值不确定,未被初始化

void* calloc (size_t num, size_t size);

calloc:分配一块 num*size bytes 大小的内存,返回一个指向该内存开始的指针,该内存的值被初始化为0

void* realloc (void* ptr, size_t size);

realloc:申请一个 size bytes 大小的内存,指针 p 指向该内存,把 ptr 指向的内存前 size 个字节数据拷贝到 p 指向的内存,释放 ptr 指向的内存,返回指针 p

void free (void* ptr);

释放内存

 
 
 

C ------ 标准函数介绍的更多相关文章

  1. Standard C 语言标准函数库介绍

    全面巩固所知所学,往精通方向迈进! Standard C 语言标准函数库速查 (Cheat Sheet) from:http://ganquan.info/standard-c/function/ C ...

  2. boost库的安装,使用,介绍,库分类

    1)首先去官网下载boost源码安装包:http://www.boost.org/ 选择下载对应的boost源码包.本次下载使用的是 boost_1_60_0.tar.gz (2)解压文件:tar - ...

  3. 01-OC介绍

    目录 一.OC语言介绍 二.ios系统 三.在OC语言开发中使用C语言语法 四.面向对象 回到顶部 一.OC语言介绍 1 早在20世纪80年代早期,BardCox发明了Objective-C,扩充了C ...

  4. .Net Core 2.0生态(4):Entity Framework Core 2.0 特性介绍和使用指南

    前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升级EF也发展到EF6.x,Entity Framework Core是一个支持跨平台的全新版本, ...

  5. JAVA 文件编译执行与虚拟机(JVM)简单介绍

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...

  6. 『Python』源码解析_源码文件介绍

    本篇代码针对2.X版本,与3.X版本细节不尽相同,由于两者架构差别不大加之本人能力有限,所以就使用2.X体验python的底层原理了. 一.主要文件夹内容 Include :该目录下包含了Python ...

  7. MAN 手册各章节功能介绍及快捷键键位整理

    前言   Man 手册页(Manua pages ,缩写man page) 是在linux操作系统在线软件文档的一种普遍形式.内容包括计算机程序库和系统调用等命令的帮助手册. 手册页是用troff排版 ...

  8. JSTL介绍

    JSTL介绍 一.介绍 JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标 ...

  9. 【转载】OpenMAXIL介绍与其体系

    1 OpenMAX IL介绍与其体系 这一部分的文档描述 OpenMAX IL的特性与体系. 1.1 OpenMAX IL 简述 OpenMAX IL 软件接口层定义了一套API,用于访问系统中的组件 ...

随机推荐

  1. UVA11988 Broken Keyboard (a.k.a. Beiju Text)【数组模拟链表】

    参考:https://blog.csdn.net/lianai911/article/details/41831645 #include <iostream> #include <c ...

  2. C语言运算符优先级和结合性

    运算符优先级和结合性 优先级                                       运算符 结合性                                         ...

  3. PHP.42-TP框架商城应用实例-后台17-商品属性3-商品分类的修改与删除

    商品分类的修改 1.改表单Goods/edit.html,加下拉框 2.因为商品属性修改涉及商品属性表goods_attr{id,attr_value,attr_id,goods_id}与属性表att ...

  4. JDBC剖析篇(2):JDBC之PreparedStatement

    一次有人问我为什么要使用JDBC中的PreparedStatement,我说可以“防止SQL注入”,其他的却不能说出个一二三,现在来看看其中的秘密 参考文章: http://www.jb51.net/ ...

  5. 26、js阶段性复习

    1.一元运算符 Operator + 可用于将变量转换为数字: <!DOCTYPE html> <html> <body> <p> typeof 操作符 ...

  6. 『AngularJS』ngShow

    原文 描述 ngShow指令显示或隐藏给定的基于标明ngShow属性的HTML元素.元素的显示或隐藏通过在元素上移除或添加ng-hide CSS类属性.".ng-hide"CSS类 ...

  7. Android adb shell启动应用程序的方法

    在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am. usage: am [subcommand] [options] start an Activity: ...

  8. Selenium LoadableComponent加载组件

    继承LoadableComponent类可以在打开地址时, 判断浏览器是否打开了预期的网址, 需要重写load()与isLoad()方法: 即使没有定义get()方法, 也可以进行get()方法的调用 ...

  9. 第二篇 Postman的高阶使用之配置全局变量及局部变量的调用及设置方法(手动方法)

    第五篇主要写了关于postman的基本使用,重点是如果发送json请求,为什么要将发送json请求呢, 一是目前大多数的请求已经倾向于发送json格式,二是本人太懒了,不想一个字段一个字段的添加到参数 ...

  10. 大批量复制Oracle数据表,连带复制主键约束,字段说明以及字段默认值(量产)

    DECLARE      CURSOR tab_name_cur       IS           SELECT table_name           FROM user_tables     ...