Linux下的memset函数

函数原型

  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!如果有疑问或错误,欢迎指出。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。