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