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
广告