C语言中memset-memcpy(memmove memccpy)-strcpy函数源代码

本文介绍了C语言中用于内存操作的几个关键函数,包括memset、memcpy、memmove、strcpy等。这些函数分别用于设置内存区域的值、复制内存区域、处理重叠内存区域的复制以及字符串的复制。文中详细阐述了每个函数的原型、用法和功能,并提供了部分源代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

1、memset

原型:extern void *memset(void *buffer, char c, int count);

用法:#include <string.h>

功能:把buffer所指内存区域的前count个字节设置成字符c

说明:返回指向buffer的指针


2、

memcpy

原型:extern void *memcpy(void *dest, void *src, unsigned int count);

用法:#inclue <string.h>

功能:由src所指内存区域复制count个字节到dest所指内存区域

说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针


memccpy

原型:extern void *memccpy(void *dest, void *src, unsigned char ch, unsigned int count);

用法:#include <string.h>

功能:由src所指内存区域复制不多于count个字节到dest所指内存区域,如果遇到字符ch则停止复制

说明:返回指向字符ch后的第一个字符的指针,如果src前count个字节中不存在ch则返回NULL。


memmove

原型:extern void *memmove(void *dest, const void *src, unsigned int count)

用法:#include <string.h>

功能:由src所指内存区域复制count个字节到dest所指向内存区域

说明:src和dest所指内存区域可以重叠,但复制后src内容会被更改。函数返回指向dest的指针


memcmp

原型:extern int memcmp(void *buf1, void *buf2, unsigned int count)

用法:#include <string.h>

功能:比较内存区域buf1和buf2的前count个字节

说明:

当buf1<buf2时,返回值<0

当buf1=buf2时,返回值=0

当buf1>buf2时,返回值>0


3、

strset

原型:extern char *strset(char *s, char c)

用法:#include <string.h>

功能:把字符串s中的所有字符都设置成字符c

说明:返回指向s的指针


strcpy

原型:extern char *strcpy(char *dest, char *src)

用法:#include <string.h>

功能:把src所指由NULL结束的字符串复制到dest所指的数组中。

说明:

src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针


strncpy

原型:extern char *strncpy(char *dest, char *src, int n)

用法:#include <string.h>

功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。

说明:

如果src的前n个字节不含NULL字符,则结果不会一NULL字符结束。

如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。

src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。


strcmp

原型:extern int strcmp(char *s1, char *s2)

用法:#include <string.h>

功能:比较字符串s1和s2

说明:

当s1<s2时,返回<0

当s1=s2时,返回=0

当s1>s2时,返回>0


strncmp

原型:extern int strcmp(char *s1, char *s2, int n)

用法:#include <string.h>

功能:比较字符串s1和s2的前n个字符

说明:

当s1<s2时,返回值<0

当s1=s2时,返回值=0

当s1>s2时,返回值>0


strlen

原型:extern int strlen(char *s)

用法:#include <string.h>

功能:计算字符串s的长度

说明:返回s的长度,不包括结束符NULL

函数源代码:

//stirng.c==================================================

 

char *strcpy(char *strDes, const char*strSrc)

{

assert((strDes!= NULL) && (strSrc != NULL));

char *address =strDes;

while ((*strDes++ = *strSrc ++) != '\0')

       NULL;

   return address;

}

  

char *strchr_(char *str, int c)

{

   assert(str != NULL);

   while ((*str != (char) c) && (*str != '\0'))

       str ++;

   if (*str != '\0')

       return str;

   return NULL;

}

char *strchr(const char *str, int c)

{

   assert(str != NULL);

   for (; *str != (char) c; ++ str)

       if (*str

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值