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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。