Unix/Linux环境C编程入门教程(29) 内存操作那些事儿
- 函数介绍
 
| 
 memccpy(拷贝内存内容)  | 
|
| 
 相关函数  | 
 bcopy,memcpy,memmove,strcpy,strncpy  | 
| 
 表头文件  | 
 #include<string.h>  | 
| 
 定义函数  | 
 void * memccpy(void *dest, const void * src, int c,size_t n);  | 
| 
 函数说明  | 
 memccpy()用来拷贝src所指的内存内容前n个字节到dest所指的地址上。与memcpy()不同的是,memccpy()会在复制时检查参数c是否出现,若是则返回dest中值为c的下一个字节地址。  | 
| 
 返回值  | 
 返回指向dest中值为c的下一个字节指针。返回值为0表示在src所指内存前n个字节中没有值为c的字节。  | 
| 
 范例  | 
 #include<string.h>  | 
| 
 执行  | 
 memccpy():string(b)  | 
| 
 
  | 
|
| 
 memchr(在某一内存范围中查找一特定字符)  | 
|
| 
 相关函数  | 
 index,rindex,strchr,strpbrk,strrchr,strsep,strspn,strstr  | 
| 
 表头文件  | 
 #include<string.h>  | 
| 
 定义函数  | 
 void * memchr(const void *s,int c,size_t n);  | 
| 
 函数说明  | 
 memchr()从头开始搜寻s所指的内存内容前n个字节,直到发现第一个值为c的字节,则返回指向该字节的指针。  | 
| 
 返回值  | 
 如果找到指定的字节则返回该字节的指针,否则返回0。  | 
| 
 范例  | 
 #include <string.h>  | 
| 
 执行  | 
 5.68E+25  | 
| 
 
  | 
|
| 
 memcmp(比较内存内容)  | 
|
| 
 相关函数  | 
 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp  | 
| 
 表头文件  | 
 #include<string.h>  | 
| 
 定义函数  | 
 int memcmp (const void *s1,const void *s2,size_t n);  | 
| 
 函数说明  | 
 memcmp()用来比较s1和s2所指的内存区间前n个字符。字符串大小的比较是以ASCII码表上的顺序来决定,次顺序亦为字符的值。memcmp()首先将s1第一个字符值减去s2第一个字符的值,若差为0则再继续比较下个字符,若差值不为0则将差值返回。例如,字符串"Ac"和"ba"比较则会返回字符'A'(65)和'b'(98)的差值(-33)。  | 
| 
 返回值  | 
 若参数s1和s2所指的内存内容都完全相同则返回0值。s1若大于s2则返回大于0的值。s1若小于s2则返回小于0的值。  | 
| 
 范例  | 
 #include<string.h>  | 
| 
 执行  | 
 memcmp(a,b):1 /*字符串a>字符串b,返回1*/  | 
| 
 
  | 
|
| 
 memcpy(拷贝内存内容)  | 
|
| 
 相关函数  | 
 bcopy,memccpy,memcpy,memmove,strcpy,strncpy  | 
| 
 表头文件  | 
 #include<string.h>  | 
| 
 定义函数  | 
 void * memcpy (void * dest ,const void *src, size_t n);  | 
| 
 函数说明  | 
 memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。与strcpy()不同的是,memcpy()会完整的复制n个字节,不会因为遇到字符串结束'\0'而结束。  | 
| 
 返回值  | 
 返回指向dest的指针。  | 
| 
 附加说明  | 
 指针src和dest所指的内存区域不可重叠。  | 
| 
 范例  | 
 #include<string.h>  | 
| 
 执行  | 
 strcpy() : string a )  | 
| 
 
  | 
|
| 
 memmove(拷贝内存内容)  | 
|
| 
 相关函数  | 
 bcopy,memccpy,memcpy,strcpy,strncpy  | 
| 
 表头文件  | 
 #include<string.h>  | 
| 
 定义函数  | 
 void * memmove(void *dest,const void *src,size_t n);  | 
| 
 函数说明  | 
 memmove()与memcpy()一样都是用来拷贝src所指的内存内容前n个字节到dest所指的地址上。不同的是,当src和dest所指的内存区域重叠时,memmove()仍然可以正确的处理,不过执行效率上会比使用memcpy()略慢些。  | 
| 
 返回值  | 
 返回指向dest的指针。  | 
| 
 附加说明  | 
 指针src和dest所指的内存区域可以重叠。  | 
| 
 范例  | 
 参考memcpy()。  | 
| 
 
  | 
|
| 
 memset(将一段内存空间填入某值)  | 
|
| 
 相关函数  | 
 bzero,swab  | 
| 
 表头文件  | 
 #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之间。  | 
| 
 范例  | 
 #include <string.h>  | 
| 
 执行  | 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  | 
- 小试
流程设置:
源代码实现:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h> int main(void)
{
// //作为输入缓冲区
char buffer[32]; long int res; //分配两指针 后面利用这两个指针进行遍历操作
char *q,*r;
//malloc先分配一段内存p
char *p = (char *)malloc(10*sizeof(char));
printf("申请内存成功\n请输入带有数字的字符串\n");
scanf("%s",buffer); //memset清零
memset(p,0,10);
printf("memset清零\n"); //memcpy 拷贝我们输入缓冲区的数字字符进p
q = p;
r = buffer;
while(r || q)
{
if(*r == '\0' )
break;
if(isdigit(*r)) //isdigit(测试字符是否为阿拉伯数字)
{
//void * memmove(void *dest,const void *src,size_t n);
memcpy(q,r,sizeof(char));
printf("找到了一个字符并拷贝了\n");
q++;
}
r++;
}
//atol转化成一个长整形数 并输出 long atol(const char *nptr);
res = atol(p);
printf("转化后的数字是%ld \n",res); free(p);
printf("释放内存成功\n");
return 0;
} 
查找一下atol的头文件
- 各平台的运行情况
在RHEL7上
在RHEL6上
在Solaris11上
在mac上
 
Unix/Linux环境C编程入门教程(29) 内存操作那些事儿的更多相关文章
- Unix/Linux环境C编程入门教程(30)  字符串操作那些事儿
		
函数介绍 rindex(查找字符串中最后一个出现的指定字符) 相关函数 index,memchr,strchr,strrchr 表头文件 #include<string.h> 定义函数 c ...
 - Unix/Linux环境C编程入门教程(23)  字符数字那些事儿
		
1.atoi 包含头文件: #include <stdlib.h> 函数原型: int atoi( const char *str ); 功能:将字符串str转换成一个整数并返回结果.参数 ...
 - Unix/Linux环境C编程入门教程(27)  内存那些事儿
		
calloc() free() getpagesize() malloc() mmap() munmap()函数介绍 calloc(配置内存空间) 相关函数 malloc,free,realloc,b ...
 - Unix/Linux环境C编程入门教程(26)  字符数字那些事儿
		
1.gcvt() strtod() strtol() strtoul() toascii() tolower() toupper函数介绍 gcvt(将浮点型数转换为字符串,取四舍五入) 相关函数 ec ...
 - Unix/Linux环境C编程入门教程(28)  日期时间那些事儿
		
记得这个专题第一篇我们写过一个程序运行时间的程序,采用库函数提供的clock()模拟做程序测试.本篇介绍的函数也是和时间相关,但是没有clock的细致,而是提供的系统时间和日期. 1.asctime( ...
 - Unix/Linux环境C编程新手教程(30)  字符串操作那些事儿
		
函数介绍 rindex(查找字符串中最后一个出现的指定字符) 相关函数 index,memchr,strchr,strrchr 表头文件 #include<string.h> 定义函数 c ...
 - Unix/Linux环境C编程入门教程(32)  环境变量那些事儿
		
1. getenv() putenv()setenv()函数介绍 getenv(取得环境变量内容) 相关函数 putenv,setenv,unsetenv 表头文件 #include<stdli ...
 - Unix/Linux环境C编程入门教程(19)Red Hat Entetprise Linux 7.0环境搭建
		
位架构,包括英特尔X-86_64.Power和s390.动态定时能力将降低内核内部中断数量,Open vSwitch 2.0功能可调节虚拟机之间的流量.RHEL 7中默认的文件系统是XFS,包含了一个 ...
 - Unix/Linux环境C编程入门教程(5) Red Hat Enterprise Linux(RHEL)环境搭建
		
Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 通过./a.out ./Y.out执行出结果,证明C++程序编译成功,也就说明li ...
 
随机推荐
- Ext4报错Uncaught Ext.Loader is not enabled
			
提示: Uncaught Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing requ ...
 - 原创:应用串行NOR闪存提升内存处理能力
			
在嵌入式系统中,NOR闪存一直以来仍然是较受青睐的非易失性内存,NOR器件的低延时特性可以接受代码执行和数据存储在一个单一的产品.虽然NAND记忆体已成为许多高密度应用的首选解决方案,但NOR仍然是低 ...
 - Windows7里的“计算器”你真的会用吗?
			
“计算器”是不同Windows版本中的必备工具,虽然功能单一,但的确是人们日常工作中不可缺少的辅助工具,本文就来谈谈它的使用. 一.标准型和科学型两种面板 我们既可从Windows附件菜单中启动它,也 ...
 - Valid Anagram 解答
			
Question Given two strings s and t, write a function to determine if t is an anagram of s. For examp ...
 - Lake Counting (POJ No.2386)
			
有一个大小为N*M的园子,雨后积起了水,八连通的积水被认为是链接在一起的求出园子里一共有多少水洼? *** *W* *** /** *进行深度优先搜索,从第一个W开始,将八个方向可以到达的 W修改为 ...
 - JFreeChart多坐标轴曲线图
			
jar包:jcommon-1.0.23.jarjfreechart-1.0.19.jar maven配置: <dependency> <groupId>jfree</gr ...
 - Hibernate中save、saveorupdate、persist方法的区别
			
在Hibernate中,save().saveOrUpdate()和persist()都是用于将对象保存到数据库中的方法,但其中有些细微的差别.例如,save()只能INSERT记录,但是saveOr ...
 - 【设计模式:单例模式】使用单例模式载入properties文件
			
先准备測试程序: package org.jediael.util; import static org.junit.Assert.*; import org.junit.Test; public c ...
 - webpack配合vue.js实现完整的单页面demo
			
本篇文章主要是我在开发前研究了webpack+vue.js的单页面应用,因为需要用到node的npm,所以确保安装了node,建议官网安装最新的稳定版本.并且在项目中需要加载一些npm包,由于npm的 ...
 - 【转换模型+扫描线】【UVA1398】Meteor
			
The famous Korean internet company nhn has provided an internet-based photo service which allows The ...