//内存函数 #include <stdio.h> #include <memory.h> #include <strings.h> void main2(){ //memset赋值函数 char str[45] = "hello luoxu hello c"; memset(str,‘A‘,6); //第一个参数内存首地址,第二个参数要赋值的值,第三个参数从首地址前进多少个字节 printf("%s\n",str); //AAAAA luoxu hello c memset(str,‘0‘,strlen(str)); //全部置为0 printf("%s,%d\n",str,strlen(str));//0000000000000000000,19 memset(str,‘\0‘,strlen(str)); //清空字符串 printf("%s,%d\n",str,strlen(str));//,0 } void main3(){ //memcpy拷贝字符串 char str1[30] ="China is great"; char str2[30] ="hello c"; printf("%s\n",str1); //China is great memcpy(str1,str2,5); //从str2中取5个字符替换掉str1中首地址开始的内容 5表示字节数 printf("%s\n",str1); //hello is great } void main4(){ //memcpy拷贝数组 int a[]={1,3,5,7,9}; int b[]={2,4,6,8,10}; memcpy(a,b,8); //从b的首地址开始取出8个字节的二进制数,赋值给从a首地址开始8个字节的二进制数,也就是替换a中的前两个元素 //memcpy按照内存字节来拷贝,不管是什么类型,都是拷贝二进制,所以四个字节的整数也可以按照字节来拷贝 for (int i = 0; i < 5; ++i) { printf("%d,",a[i]); //2,4,5,7,9, } } void main5(){ //memccpy拷贝字符串,某一字符结束 char str1[30] ="China is great"; char str2[30] ="hello c"; printf("%s\n",str1); //China is great //memccpy(str1,str2,‘0‘,7); //从str2中取5个字符(遇到‘0‘就结束替换)替换掉str1中首地址开始的内容 7表示字节数,此时等价于memcpy() memccpy(str1,str2,‘l‘,7); //从str2中截取从首地址开始到‘l‘的字符串,将其与str1中首地址开始的字符串替换 //作用:某些时候可以利用此特性把某字符设置为结束符 printf("%s\n",str1); //helna is great } void main6(){ //memchr 查找在字符串中某一字符的地址 char str[30] ="China is great"; char ch=‘i‘; char *p = memchr(str,ch,30); //从地址str开始检索,前进30个字节,存在返回其地址,不存在返回为NULL if(p ==NULL) printf("not found"); else printf("found"); } void main(){ //memicmp 忽略大小写比较字符串是否相等 ignore char *buf1 ="ABCD123"; char *buf2 ="abcd456"; int res = memicmp(buf1,buf2,4); //比较buf1和buf2前面四个字节是否相等,忽略大小写,相等返回其0,不等返回非0 if(res ==0 ) printf("前4个字符忽略大小写相等"); else printf("前4个字符忽略大小写相等"); }
原文地址:https://www.cnblogs.com/luoxuw/p/11331137.html
时间: 2024-10-16 15:37:03