Linux下的memset函数

Posted on 2015-03-24 11:38  Bumble_Bee  阅读(5713)  评论(0编辑  收藏  举报

函数原型

  void *memset(void *s, int c, size_t n);

函数功能

  将以s为首的存储空间前n字节空间全部替换为参数c指定的数据。

返回值

  更新后的首地址s。

头文件

  #include <string.h>

 

为什么记录这个函数呢?它很好用啊有木有!以前初始化数组很麻烦有木有!用这个函数duang的一下就搞定了!废话少说,上测试代码。

#include <memory.h>
#include <stdio.h>

void main( void )
{
   char buffer[] = "This is a test of the memset function";
   printf( "Before: %s\n", buffer );
   memset( buffer, '*', sizeof(buffer)-1 );    //这里buffer的大小-1是为了避免将字符串的结尾‘\0’也变成*
   printf( "After:  %s\n", buffer );
}

很方便有木有?

上面是字符串,下面再来一个整形数组的

#include <memory.h>
#include <stdio.h>

void main( void )
{
    int i = 0;
    int a[10];
    memset(a,0,sizeof(a));
    while(i < 10)
    {
        printf("a[%d] = %d\n",i,a[i] );
        i++;
    }

}

更叼的,开辟一块共享内存,初始化

#include <memory.h>
#include <stdio.h>
#include <sys/shm.h>
#include <unistd.h>

void main( void )
{
    char *p_addr;

    int shmid;

    if((shmid = shmget(0x1234,5,666|IPC_CREAT))== -1)    //创建
        exit(1);

    p_addr = shmat(shmid,0,0);    //映射
    
    memset(p_addr,'\0',1024);    //初始化

}

 

 

That's all!如果有疑问或错误,欢迎指出。