c语言 字符串函数

来源:互联网 发布:js实战案例 编辑:程序博客网 时间:2024/04/28 10:21


c语言中的字符串函数

主要是两大类,一类是拷贝的,一类是比较的,另一个就是其他的

拷贝的有:

1. strcpy

函数原型

char *strcpy( char *strDestination, const char *strSource );

函数功能

将strSource的内容拷贝到strDestination中去,包括' \0'

返回值

返回strDestination的内容

特点

strSource和strDestination的内存区域可能重叠,没有定义

没有检查strDestination的大小是否够

 

2 strcpy_s

函数原型

 
errno_t strcpy_s(   char *strDestination,   size_t numberOfElements,   const char *strSource );

函数功能

将strSource的内容拷贝到strDestination中去,包括' \0'

返回值

成功返回0

特点

strSource和strDestination的内存区域可能重叠,没有定义

检查了strDestination的大小

 

3 memset

函数原型

void *memset(   void* dest,    intc,    size_tcount);

函数功能

将count个c 赋值到dest里面去,经常用于将字符串清零。

返回值

dest

 

4 memcpy

函数原型

void *memcpy(    void* dest,    const void*src,    size_tcount);

函数功能

将count个字符从src中拷贝到dest中

返回值

dest

特点

不能处理src和dest有内存重叠的情况(overlapping regions)

代码原型

char* m_memcpy(char* dest, const char* src, int n){   char* p=dest;while (n)   {   if (*src!='\0')      *p=*src;  src++;  p++;  n--;   }   *p='\0';   return dest;}

 

 

5  memmove

函数原型

void *memmove(    void* dest,    const void*src, size_tcount);

函数功能

将count个字符从src中拷贝到dest中

返回值

dest

特点

可以处理src和dest有内存重叠的情况(overlapping regions)

处理的方式就是判断有没有重叠的部分,有的话就从后往前拷贝

代码原型

char* m_memmove(char* dest, const char* src, int n){    char* p=dest;if (src+n>p && src<p ) //有重叠for(int i=1;i<n+1;i++)*(p+n-i)=*(src+n-i);else //没有重叠{while (n){*p=*src;src++;p++;n--;}}return dest;}


 

字符串比较函数

1 strcmp

函数原型

int strcmp( const char *string1,const char *string2);

特点

不忽略大小写

2 strncmp

函数原型

int strncmp( const char *string1,const char *string2,size_tcount );

特点

不忽略大小写

 

3 memcmp

函数原型

int memcmp(    const void* buf1,    const void*buf2,    size_tcount);

特点

同strncmp差不多,但是具体的差别还需要进一步研究呀

int r = strncmp("1234","1234",7);  //字符串为0退出,循环4次
 int r2 = memcmp("1234","1234",7);  //循环7次或者遇到不相等的时候退出。所以当比较的数大于字符串长度时候,不安全啊。

也可以理解,strncmp是字符串比较,所以可以用\0来判断,但是void*的就不好判断了。

 

4 strnicmp

函数原型

 
int strnicmp(   const char *string1,   const char *string2,   size_t count );

特点

不区分大小写的比较

 

 

原创粉丝点击