c語言 字串函數

來源:互聯網
上載者:User

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_t
count );

特點

不忽略大小寫

 

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

特點

不區分大小寫比較

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.