代码改变世界

char 类型的操作函数

  清晨、午后  阅读(1404)  评论(0编辑  收藏  举报

1.内存充填

void *memset(void *s,int ch,size_t n);

是由C Run-time Library提供的提供的函数,作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。由于是语言层面提供,所以可跨平台使用。

示例:

char str[] = "almost every programmer should know memset!";  
memset (str,'-',6);  

2.内存拷贝

void *memcpy(void *dest, const void *src, size_t n);

memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。

C语言:#include<string.h>
C++:#include<cstring>
3.比较两个字符串
extern int strcmp(const char *s1,const char *s2);
当s1<s2时,返回为负数;
当s1==s2时,返回值= 0;
当s1>s2时,返回正数。
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
int strncmp ( const char * str1, const char * str2, size_t n );
str1, str2 为需要比较的两个字符串,n为要比较的字符的数目。

 4.拷贝字符串, 

char * strcpy(char* destination,const char * source);
这里,需要注意strcpy仅仅复制到null字符就结束了。
将由source指针指示的C 字符串(包括结尾字符)复制到destination指针指示的区域中。
该函数不允许source和destination的区域有重叠,同时,为了避免溢出,destination区域应该至少和source区域一样大
返回目标串的地址。
复制代码
char* strncpy(char* destination,const char* source,size_t num);
strncpy:复制source的前num字符到destination。
如果遇到null字符('\0'),且还没有到num个字符时,就用(num - n)(n是遇到null字符前已经有的非null字符个数)个null字符附加到destination。返回目标串的地址。
注意:并不是添加到destination的最后,而是紧跟着由source中复制而来的字符后面。下面举例说明:

char des[] = "Hello i am!";

char source[] = "abc\0def";

strncpy(des,source,5);

此时,des区域是这样的:a,b,c,\0,\0,i,空格,a,m,!  ???

\0,\0并不是添加在!的后面。
复制代码

5.内存移动

void * memmove(void* destination,const void* source,size_t num);

memmove:同memcpy完成同样的功能,区别是,memmove允许destination和source的区域有重叠。而其他三个函数不允许。

例子:char str[] = "This is a test!";

memmove(str+2,str+10,4);

此时,str变成:Thtests a test!

 

 

 

 

 

 

 

 
 
 
 

 

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示