ITEEDU

八、内存操作函数,所在函数库为string.h、mem.h

mem…操作存贮数组

void *memccpy(void *destin,void *source,unsigned char ch,unsigned n) 
void *memchr(void *s,char ch,unsigned n) 
void *memcmp(void *s1,void *s2,unsigned n) 
int memicmp(void *s1,void *s2,unsigned n) 
void *memmove(void *destin,void *source,unsigned n) 
void *memcpy(void *destin,void *source,unsigned n) 
void *memset(void *s,char ch,unsigned n) 

这些函数,mem…系列的所有成员均操作存贮数组.在所有这些函数中,数组是n字节长.

memcpy从source复制一个n字节的块到destin.如果源块和目标块重迭,则选择复制方向, 以例正确地复制覆盖的字节.

memmove与memcpy相同. memset将s的所有字节置于字节ch中.s数组的长度由n给出.

memcmp比较正好是n字节长的两个字符串s1和s2.些函数按无符号字符比较字节,因此,

memcmp("0xFF","\x7F",1)返回值大于0. memicmp比较s1和s2的前n个字节,不管字符大写或小写.

memccpy从source复制字节到destin.复制一结束就发生下列任一情况:

(1)字符ch首选复制到destin.

(2)n个字节已复制到destin.

memchr对字符ch检索s数组的前n个字节.

返回值:memmove和memcpy返回destin

memset返回s的值

memcmp和memicmp的返回值分三种情况:

若s1<s2返回值小于0

若s1=s2返回值等于0

若s1>s2返回值大于0

memccpy若复制了ch,则返回直接跟随ch的在destin中的字节的一个指针; 否则返回NULL

memchr返回在s中首先出现ch的一个指针;如果在s数组中不出现ch,就返回NULL.

void movedata(int segsrc,int offsrc, int segdest,int offdest, unsigned numbytes) 

本函数将源地址(segsrc:offsrc)处的numbytes个字节复制到目标地址(segdest:offdest)

void movemem(void *source,void *destin,unsigned len) 

本函数从source处复制一块长len字节的数据到destin.若源地址和目标地址字符串重迭,则选择复制方向,以便正确的复制数据.

void setmem(void *addr,int len,char value) 

本函数把addr所指的块的第一个字节置于字节value中.

九、str…字符串操作函数

char stpcpy(char *dest,const char *src) 将字符串src复制到dest

char strcat(char *dest,const char *src) 将字符串src添加到dest末尾

char strchr(const char *s,int c) 检索并返回字符c在字符串s中第一次出现的位置

int strcmp(const char *s1,const char *s2) 比较字符串s1与s2的大小,并返回s1-s2

char strcpy(char *dest,const char *src) 将字符串src复制到dest

size_t strcspn(const char *s1,const char *s2) 扫描s1,返回在s1中有,在s2中也有的字符个数

char strdup(const char *s) 将字符串s复制到最近建立的单元

int stricmp(const char *s1,const char *s2) 比较字符串s1和s2,并返回s1-s2

size_t strlen(const char *s) 返回字符串s的长度

char strlwr(char *s)

将字符串s中的大写字母全部转换成小写字母,并返回转换后的字符串

char strncat(char *dest,const char *src,size_t maxlen) 

将字符串src中最多maxlen个字符复制到字符串dest中

int strncmp(const char *s1,const char *s2,size_t maxlen) 

比较字符串s1与s2中的前maxlen个字符

char strncpy(char *dest,const char *src,size_t maxlen) 

复制src中的前maxlen个字符到dest中

int strnicmp(const char *s1,const char *s2,size_t maxlen) 

比较字符串s1与s2中的前maxlen个字符

char strnset(char *s,int ch,size_t n) 

将字符串s的前n个字符置于ch中

char strpbrk(const char *s1,const char *s2) 

扫描字符串s1,并返回在s1和s2中均有的字符个数

char strrchr(const char *s,int c) 

扫描最后出现一个给定字符c的一个字符串s

char strrev(char *s) 

将字符串s中的字符全部颠倒顺序重新排列,并返回排列后的字符串

char strset(char *s,int ch) 

将一个字符串s中的所有字符置于一个给定的字符ch

size_t strspn(const char *s1,const char*s2) 

扫描字符串s1,并返回在s1和s2中均有的字符个数

char strstr(const char *s1,const char *s2) 

扫描字符串s2,并返回第一次出现s1的位置

char strtok(char *s1,const char *s2) 

检索字符串s1,该字符串s1是由字符串s2中定义的定界符所分隔

char strupr(char *s) 

将字符串s中的小写字母全部转换成大写字母,并返回转换后的字符串