内存函数

//内存函数
#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

内存函数的相关文章

[c/c++] programming之路(23)、字符串(四)——strncat,atoi,strcmp,strlen等,以及常用内存函数

一.strncat及自行封装实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> //<string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. //<cstring>是C++版本的<string.h> //<string>定义了一个string的字符串类,包含

字符串基本操作以及内存函数

/* ============================================================================ Name : TestString.c Author : lf Version : Copyright : Your copyright notice Description : C语言字符串相关操作以及内存函数 1 在Java中有String数据类型,但是在C语言中没有 2 在C语言中一般用字符数组来表示字符串,因为在C中没有Strin

memcpy() -- 拷贝内存函数

定义函数: void *memcpy(void *dest, const void *src, size_t n)函数说明: memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上.与strcpy()不同的是,memcpy()会完整的复制n个字节,不会因为遇到字符串结束'\0'而结束返回值:   返回指向dest的指针附加说明:指针src和dest所指的内存区域不可重叠---------------------------------------------------

[CareerCup] 13.9 Aligned Malloc and Free Function 写一对申请和释放内存函数

13.9 Write an aligned malloc and free function that supports allocating memory such that the memory address returned is divisible by a specific power of two. EXAMPLE align_malloc (1000,128) will return a memory address that is a multiple of 128 and t

C语言内存函数

http://see.xidian.edu.cn/cpp/u/hs3/ 函数 说明 calloc() 分配内存空间 free() 释放内存空间 getpagesize() 取得内存分页大小 malloc() 分配一段内存空间 mmap() 建立内存映射 munmap() 解除内存映射 memccpy() 复制内存中的内容 memchr() 在内存中查找特定字符 memcmp() 比较内存前n个字节 memcpy() 复制内存内容(忽略\0) memmove() 复制内存内容 memset() 向

动态分配内存函数:malloc(),calloc(),realloc(),以及memset(),free() 详细总结

以下资料大部分来源网络,个人进行了汇总和添加. 内存可分为下面几个类别: 堆栈区(stack):由编译器自动分配与释放,存放函数的参数值,局部变量,临时变量等等,它们获取的方式都是由编译器自动执行的,变量生命长度:函数结束即释放内存. 堆区(heap):一般由程序员分配与释放,即程序员不释放,程序结束时可能由操作系统回收(C/C++没有此等回收机制,Java/C#有),注意它与数据结构中的堆是两回事,分配方式倒是类似于链表. 全局区(静态区)(static):全局变量和静态变量的存储是放在一块儿

6-1 爆内存函数实例 (6 分)

本题要求实现一个递归函数,用户传入非负整型参数n,用户依次输出1到n之间的整数.所谓递归函数就是指自己调用自己的函数. 说明: (1)递归函数求解问题的基本思想是把一个大规模问题的求解归结为一个相对较小规模问题的求解, 小规模归结为小小规模,以此类推,直至问题规模小至边界(边界问题可直接求解).递归函数由两 部分组成,一部分为递归边界,另一部分为递归关系式.以求阶乘函数为例,递归边界Factorial(1)=1; 递归公式: Factorial(n)=n*Factorial(n-1),它对应的递

Windows驱动开发-内核常用内存函数

搞内存常用函数 C语言 内核 malloc ExAllocatePool memset RtlFillMemory memcpy RtlMoveMemory free ExFreePool 原文地址:https://www.cnblogs.com/a-s-m/p/12330596.html

Posix与System V共享内存函数区别

Posix标准shm_open:打开或创建一个共享内存区shm_unlink:删除一个共享内存区ftruncate:调整文件或共享内存区大小sem_open:创建信号量sem_wait:等待信号量sem_post:发送信号量sem_close:关闭信号量 System V标准ftok:生成keyshmget:建立共享内存shmdt:删除共享内存区semget:创建信号量semop:操作信号量semctl:控制信号量 简单解释一下ipcs命令和ipcrm命令.取得ipc信息:ipcs [-m|-q