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!如果有疑問或錯誤,歡迎指出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM