这里列出几个常用的内存处理函数,作为简单的介绍和比较使用

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;
}

posted on 2010-05-10 17:44  VRS  阅读(1027)  评论(0编辑  收藏  举报