函数原型:
/*string.h*/
/* Set N bytes of S to C. */
extern void *memset (void *__s, int __c, size_t __n) __THROW __nonnull ((1));
即:void *memset(void *s,int ch, unsigned n)
作用:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。
示例1:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char * my_str = (char *)malloc (100);
char msg_buf[1024];
memset (my_str, 'a',10 );
memset (msg_buf,0,1024 ); //0->NULL
printf ("%s\n",my_str);
free (my_str);
return 0 ;
}
编译运行:
aaaaaaaaaa
示例2:
//memset可以方便地清空结构体、数组
#include <stdio.h>
#include <string.h>
struct my_struct
{
int x;
char s[ 10];
};
int main(int argc, const char *argv[])
{
struct my_struct ms;
struct my_struct MS[10];
//清空ms
ms .x = 0 ;
ms .s[ 0] = '\0' ;
//memset清空ms
memset (&ms, 0,sizeof(struct my_struct ));
//memset清空MS
memset (MS, 0,sizeof(struct my_struct )*10);
return 0 ;
}