首页 > 代码库 > 基础函数介绍

基础函数介绍

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));

 

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来初始化的。

 

基础函数介绍