函数原型: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, ...)
vsnprintf()
可能会由于需要打印未知个数的变量参数,那么vsnprintf
函数就排上用场了。
函数原型:int vsnprintf(char *str, size_t size, const char *format, va_list ap)
通过vsnprintf()实现snprintf()功能:
#include <stdio.h> #include <stdarg.h> int my_snprintf(char *s, int size, const char *fmt, ...) //该自定义函数,与系统提供的snprintf()函数相同。 { va_list args; int n=0; va_start(args, fmt); //获得可变参数列表 n=vsnprintf (s, size, fmt, args); //写入字符串s va_end(args); //释放资源 return n; //返回写入的字符个数 } int main() { char str[1024]; my_snprintf( str, sizeof(str), "%d,%d,%d,%d",5,6,7,8); printf("%s\n",str); return 0; }
memset()
函数原型:void *memset(void *s, int ch, size_t n);
功能介绍:
将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值,memset是以字节为单位,初始化内存块
1. 当初始化一个字节单位的数组时,可以用memset把每个数组单元初始化成任何你想要的值,比如,
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初始化时需要小心。
Parameters par;
par.p_x = new int[10];
memset(&par, 0, sizeof(par));
C 库函数 int memcmp(const void *str1, const void *str2, size_t n)) 把存储区 str1 和存储区 str2 的前 n 个字节进行比较
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);
释放内存