memset()用於用特定值填充內存塊。
memset()函數的語法如下:
// ptr ==> Starting address of memory to be filled // x ==> Value to be filled // n ==> Number of bytes to be filled starting // from ptr to be filled void *memset(void *ptr, int x, size_t n);
注意,ptr是一個空指針,因此我們可以將任何類型的指針傳遞給該函數。
讓我們來看一個簡單的C語言示例,以演示如何使用memset()函數:
// C program to demonstrate working of memset()
#include <stdio.h>
#include <string.h>
int main()
{
char str[50] = "GeeksForGeeks is for programming geeks.";
printf("\nBefore memset():%s\n", str);
// Fill 8 characters starting from str[13] with '.'
memset(str + 13, '.', 8*sizeof(char));
printf("After memset(): %s", str);
return 0;
}
輸出:
Before memset():GeeksForGeeks is for programming geeks. After memset():GeeksForGeeks........programming geeks.
說明:(str + 13)指向字符串“ GeeksForGeeks用於編程極客”的第一個空格(從0開始的索引)。memset()設置字符“。”,從字符串的首個“”開始,到最大8個字符位置。給定的字符串,因此我們得到如上所示的輸出。
// C program to demonstrate working of memset()
#include <stdio.h>
#include <string.h>
void printArray(int arr[], int n)
{
for (int i=0; i<n; i++)
printf("%d ", arr[i]);
}
int main()
{
int n = 10;
int arr[n];
// Fill whole array with 0.
memset(arr, 0, n*sizeof(arr[0]));
printf("Array after memset()\n");
printArray(arr, n);
return 0;
}
輸出:
0 0 0 0 0 0 0 0 0 0
行使:
預測以下程序的輸出。
// C program to demonstrate working of memset()
#include <stdio.h>
#include <string.h>
void printArray(int arr[], int n)
{
for (int i=0; i<n; i++)
printf("%d ", arr[i]);
}
int main()
{
int n = 10;
int arr[n];
// Fill whole array with 100.
memset(arr, 10, n*sizeof(arr[0]));
printf("Array after memset()\n");
printArray(arr, n);
return 0;
}
請注意,上述代碼並未將數組值設置為10,因為memset可以逐個字符地工作,並且整數包含一個以上的字節(或多個字符)。
但是,如果將10替換為-1,則得到-1值。因為在char和int的情況下-1的表示都包含全1。
相關用法
- C++ cin get()用法及代碼示例
- C++ ratio_not_equal()用法及代碼示例
- C++ set_symmetric_difference用法及代碼示例
- C++ ratio_equal()用法及代碼示例
- C++ std::mismatch()用法及代碼示例
- C++ cauchy_distribution a()用法及代碼示例
注:本文由純淨天空篩選整理自 memset() in C with examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。