C庫 - memset() 函式



C庫函式`memset()` 的型別為 void,它接受三個變數作為引數,將字元 c(一個無符號字元)複製到引數 str 指向的字串的前 n 個字元。

此函式用於使用特定值填充連續的記憶體塊。它還將字元的值轉換為無符號字元,並將其複製到給定字串指向的物件的前 n 個字元中的每一個。如果 n 大於字串大小,則結果未定義。

語法

以下是C庫函式`memset()` 的語法:

void *memset(void *str, int c, size_t n)

引數

此函式接受以下引數:

  • str - 這是指向要填充的記憶體塊的指標。

  • c -

    這是第二個引數,型別為整數,在用於填充記憶體塊之前將其轉換為無符號字元。
  • n - 這是要設定為該值的位元組數。

返回值

此函式返回指向記憶體區域 str 的指標。

示例 1

在這個例子中,我們使用 C 庫函式 `memset()` 設定初始字串,並使用 memset() 函式修改字串內容。

#include <stdio.h>
#include <string.h>

int main () 
{
   char str[50];

   strcpy(str, "Welcome to Tutorialspoint");
   puts(str);

   memset(str, '#', 7);
   puts(str);
   
   return(0);
}

輸出

以上程式碼產生以下結果:

Welcome to Tutorialspoint
####### to Tutorialspoint

示例 2

下面的程式使用 memset() 初始化一個整數陣列為零。

#include <stdio.h>
#include <string.h>

int main() {
   int arr[10];
   memset(arr, 0, sizeof(arr));

   printf("Array after memset(): ");
   for (int i = 0; i < 10; i++) {
       printf("%d ", arr[i]);
   }
   printf("\n");

   return 0;
}

輸出

執行上述程式碼後,我們將得到以下結果:

Array after memset(): 0 0 0 0 0 0 0 0 0 0 

示例 3

在這裡,我們建立一個 C 程式,使用 memset() 初始化字元陣列為特定字元 ('Z')。

#include <stdio.h>
#include <string.h>

int main() {
   char str[20];
   memset(str, 'Z', 10);
   printf("String after memset(): %s\n", str);
   return 0;
}

執行程式碼後,我們將得到以下結果:

String after memset(): ZZZZZZZZZZ
廣告