memset库函数

头文件:#include <string.h>

定义函数:void * memset(void *s, int c, size_t n);

函数说明:memset()会将参数s 所指的内存区域前n 个字节以参数c 填入,然后返回指向s 的指针。在编写程序时,若需要将某一数组作初始化,memset()会相当方便。

返回值:返回指向s 的指针。

附加说明:参数 c 虽声明为int,但必须是unsigned char,所以范围在0 到255 之间。

常用内存空间的初始化。

1、初始化字符数组(常用)

#include <stdio.h>
#include <string.h>
int main(void)
{
    char s[5];
    memset(s,‘A‘,sizeof(s));
    s[5]=‘\0‘;
    puts(s);
    return 0;
}

2、初始化数组(注意:初始化为0正确实现,其他初始值还是通过循环语句实现)

#include <stdio.h>
#include <string.h>
int main(void)
{
    int i,array1[5],array2[5];
    memset(array1,0,sizeof(array1));
    for(i=0; i<5; ++i)
        printf("%d ",array1[i]);

    printf("\n");

    memset(array2,1,sizeof(array2));
    for(i=0; i<5; ++i)
        printf("%d ",array2[i]);
    return 0;
}

通过库函数memset()来对一个数组进行初始化,需要了解一下该函数的工作原理。库函数memset()是针对字节操作的,其中第二个参数值被赋给第一个参数指向的内存地址开始的每一个字节,因此,这种初始化其实存在局限性,也导致其主要用于清除数组内容等。比如:假设i=0,1,2,...

memset(a,0,sizeof(a));  // 此时a[i]=0x00000000

memset(a,-1,sizeof(a)); // 此时a[i]=0xffffffff

memset(a,0x0f,sizeof(a)); // 此时a[i]=0x0f0f0f0f=252645135

由于500=0x1f4,400=0x190,因此,如果使用

memset(a,0x190,sizeof(a)); // 此时a[i]=0x90909090

所以,初始化过程还是建议使用循环语句来做。

时间: 2024-10-06 06:26:07

memset库函数的相关文章

模拟实现部分库函数(strcpy,strcmp,strcat,strstr,memcpy,memmove,memset)

//1.strcpy(拷贝) char* my_strcpy(char*dst, const char*src) {  assert(dst);  assert(src);  char* cp = dst;  while (*cp++ = *src++)  {   ;  }  return dst; } //2.strcat(连接) char* my_strcat(char*dst, const char*src) {  assert(dst);  assert(src);  char* cp 

常用C库函数小结

1. sprintf 原型:int sprintf( char *buffer, const char *format, [ argument] - ); 功能:将格式化后的字符串写在buffer中,常用于把数字打印在字符串中:连接字符串. 参数:buffer - 待写入缓冲区: format - 与printf一致,格式化字符串 : 返回值:字符串长度,strlen. 2. sscanf 原型:int sscanf(const char *buffer,const char *format,[

STM32库函数编程

catalogue 1. 基于标准外设库的软件开发 2. 基于固件库实现串口输出(发送)程序 3. 红外接收实验 1. 基于标准外设库的软件开发 0x1: STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库(即操作片外固件的代码集合),是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征.该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应

C库函数中字符串处理函数集合(转)

C库函数中字符串处理函数集合(转) C库函数中字符串处理函数集合 bcmp 原型:extern int bcmp(const void *s1, const void *s2, int n); 用法:#include <string.h> 功能:比较字符串s1和s2的前n个字节是否相等 说明:如果s1=s2或n=0则返回零,否则返回非零值.bcmp不检查NULL. bcopy 原型:extern void bcopy(const void *src, void *dest, int n); 用

C语言字符串处理库函数

http://blog.csdn.net/pipisorry/article/details/36898405 使用C语言字符串处理的库函数,务必包含头文件string.h,即#include <string.h> 1. 比较字符串大小函数   1) 忽略大小写---strcasecmp 函数原型: int strcasecmp (const char *s1, const char *s2); 函数说明: 用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异 2)忽略大小写-stric

【面试题】C语言:模拟实现内存放置函数memset()

模拟实现内存放置函数memset() 我们查看库函数可知,函数原型为: void * __cdecl memset ( void *dst, int val, size_t count),我们常用于将数组arr向后几个字节初始化置为0,而并不怎么用于置为其他元素,如1.这是因为: val = 1,是int型,将它赋给char型dest,则只把低八位赋给dest,下次再接着循环,每次都只把一个字节长度的1赋给dest.如此重复count次,结束.在输出过程中,而arr是int型,一个int型是4个

转 字符串处理函数(不使用库函数实现)

////////////////////////////////////////////////////////////////////////////////////计算字符串的长度int strlen1(const char *str){ int len=0; while (*str++!='\0')  len++; return len; /*字符串长度较长时该方法比上面(自增两次)的效率要高 **const char *temp=str;//保存src的首地址 **while(*src+

C语言中最常用标准库函数

标准头文件包括: <asset.h>      <ctype.h>       <errno.h>       <float.h> <limits.h>      <locale.h>       <math.h>        <setjmp.h> <signal.h>     <stdarg.h>      <stddef.h>      <stdlib.h>

bzero, memset ,setmem 区别【转】

本文转载自:http://chang6520.blog.163.com/blog/static/112665875201302843359715/ bzero 原型: extern void bzero(void *s, int n); 用法: #include <string.h> 功能:置字节字符串s的前n个字节为零. 说明:bzero无返回值. 举例: // bzero.c #include <syslib.h>#include <string.h>int mai