这里列出几个常用的内存处理函数,作为简单的介绍和比较使用
memccpy |
|
原型:extern void *memccpy(void *dest, void *src, unsigned char ch, unsigned int count); 用法:#include <string.h>
功能:由src所指内存区域复制不多于count个字节到dest所指内存区域,如果遇到字符ch则停止复制。
说明:返回指向字符ch后的第一个字符的指针,如果src前n个字节中不存在ch则返回NULL。ch被复制。
举例: // memccpy.c
#include <syslib.h> #include <string.h> main() { char *s="Golden Global View"; char d[20],*p;
clrscr();
p=memccpy(d,s,'x',strlen(s)); if(p) { *p='\0'; // MUST Do This printf("Char found: %s.\n",d); } else printf("Char not found.\n"); getchar(); return 0; } |
|
memcpy |
|
原型:extern void *memcpy(void *dest, void *src, unsigned int count); 用法:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。
举例: // memcpy.c
#include <syslib.h> #include <string.h> main() { char *s="Golden Global View"; char d[20];
clrscr();
memcpy(d,s,strlen(s)); d[strlen(s)]=0; printf("%s",d); getchar(); return 0; } |
|
memmove |
|
原型:extern void *memmove(void *dest, const void *src, unsigned int count);
用法:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域可以重叠,但复制后src内容会被更改。函数返回指向dest的指针。
举例: // memmove.c
#include <syslib.h> #include <string.h>
main() { char *s="Golden Global View";
clrscr();
memmove(s,s+7,strlen(s)-7); s[strlen(s)-7]=0; printf("%s",s); getchar(); return 0; } |
|
memset |
|
原型:extern void *memset(void *buffer, int c, int count);
用法:#include <string.h>
功能:把buffer所指内存区域的前count个字节设置成字符c。
说明:返回指向buffer的指针。
举例: // memset.c
#include <syslib.h> #include <string.h>
main() { char *s="Golden Global View";
clrscr();
memset(s,'G',6); printf("%s",s); getchar(); return 0; } |
|
memchr |
|
原型:extern void *memchr(void *buf, char ch, unsigned count); 用法:#include <string.h>
功能:从buf所指内存区域的前count个字节查找字符ch。
说明:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。
举例: // memchr.c
#include <syslib.h> #include <string.h> main() { char *s="Hello, Programmers!"; char *p;
clrscr();
p=memchr(s,'P',strlen(s)); if(p) printf("%s",p); else printf("Not Found!"); getchar(); return 0; } |
|
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
举例: // memcmp.c
#include <syslib.h> #include <string.h> main() { char *s1="Hello, Programmers!"; char *s2="Hello, programmers!"; int r;
clrscr();
r=memcmp(s1,s2,strlen(s1)); if(!r) printf("s1 and s2 are identical"); else if(r<0) printf("s1 less than s2"); else printf("s1 greater than s2"); getchar(); return 0; } |
|
memicmp |
|
原型:extern int memicmp(void *buf1, void *buf2, unsigned int count);
用法:#include <string.h>
功能:比较内存区域buf1和buf2的前count个字节但不区分字母的大小写。
说明:memicmp同memcmp的唯一区别是memicmp不区分大小写字母。 当buf1<buf2时,返回值<0 当buf1=buf2时,返回值=0 当buf1>buf2时,返回值>0
举例: // memicmp.c
#include <syslib.h> #include <string.h> main() { char *s1="Hello, Programmers!"; char *s2="Hello, programmers!"; int r;
clrscr();
r=memicmp(s1,s2,strlen(s1)); if(!r) printf("s1 and s2 are identical"); else if(r<0) printf("s1 less than s2"); else printf("s1 greater than s2"); getchar(); return 0; } |
|
转载于:https://www.cnblogs.com/VRS_technology/archive/2010/05/10/1731958.html