1. 程式人生 > 其它 >c標準庫<string.h>

c標準庫<string.h>

技術標籤:# C++

memset

理論

/*
* 功能:將s中當前位置後面的n個位元組用c替換
*  memset 是對較大的陣列或結構體進行清零初始化的最快方法,因為它是直接對記憶體進行操作的。
* 引數:
*   str -- 指向要填充的記憶體塊。
*   c -- 要被設定的值。該值以 int 形式傳遞,但是函式在填充記憶體塊時是使用該值的無符號字元形式。
*   n -- 要被設定為該值的字元數
* 返回值:
*   該值返回一個指向儲存區 str 的指標。
*/
void *memset(void *str, int c, size_t n)

使用

# include <stdio.h>
# include <string.h> int main(void) { int i; //迴圈變數 char str[10]; char *p = str; memset(str, 0, sizeof(str)); //只能寫sizeof(str), 不能寫sizeof(p) for (i=0; i<10; ++i) { printf("%d\x20", str[i]); } printf("\n"); return 0; }

根據memset函式的不同,輸出結果也不同,分為以下幾種情況:

memset(p, 0, sizeof§); //地址的大小都是4位元組
0 0 0 0 -52 -52 -52 -52 -52 -52

memset(p, 0, sizeof(*p)); //*p表示的是一個字元變數, 只有一位元組
0 -52 -52 -52 -52 -52 -52 -52 -52 -52

memset(p, 0, sizeof(str));
0 0 0 0 0 0 0 0 0 0

memset(str, 0, sizeof(str));
0 0 0 0 0 0 0 0 0 0

http://c.biancheng.net/view/231.html

#include <stdio.h>
#include <string.h>
int main () { char str[50]; strcpy(str,"This is string.h library function"); puts(str); memset(str,'$',7); puts(str); return(0); }

在這裡插入圖片描述