C字符串處理函數

1、字符串長度strlen()

原型爲:

size_tstrlen(
   const char *str
);
//size_t_int64或者unsignedint,取決於平臺環境

注意:strlen得到的是除字符串結束標記(string terminator / nullcharacter)外的所有字符的個數.

2、字符串大小寫轉換struprstrlwr

原型爲:

char *strupr(

char *str

);

char *strlwr(
   char * str
);

返回值和函數的參數一樣.

3、字符串複製函數strcpystrncpystrcpy_s

原型爲

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

char *strncpy(char*strDest,constchar*strSource,size_t count);

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

前兩個函數分別返回strDestinationstrDest.最後一個返回錯誤信息.

strncpy函數可以控制需要複製的字符個數,程序員可以通過這個參數提高程序的安全性,不過在VC2005及以上版本中仍然會有一個警告,因爲如果程序員自身在設置這個參數時出錯的話(比如設置的字符個數超出緩衝區可以容納的字符個數),這個函數還是會像strcpy一樣執行。 

strcpy_s函數需要緩衝區可以容納的字符個數作爲其參數之一,這樣可以幫助程序員檢查複製時的安全性,如果緩衝區容量不足,程序在運行時將拋出異常。這樣的做法在字符串複製時安全性是最高的(不過也需要程序員準確表示出緩衝區的大小)。同樣我們也可以通過assert的方法來提高使用strcpy和strncpy時的安全性。strcpy_s函數是VC++中推薦的安全函數.

4、字符串比較函數strcmp_stricmp

int strcmp(constchar*string1,constchar*string2);

函數返回string1string2在詞典中(如果將兩個字符串按詞典索引順序放入詞典中的話)的順序關係.如下

Value

Relationship of string1 to string2

< 0

string1 less thanstring2

0

string1 identical tostring2

> 0

string1 greater thanstring2

_stricmp對字符串中字母的大小寫不敏感(insensitive).

5、字符串連接函數strcatstrncat

char *strcat(

char *strDestination,
   const char *strSource

);

char *strncat(
   char *strDest,
   const char *strSource,
   size_t count
);

strncat中的count參數指明要附加的字符個數,如果count >strlen(strSource) + 1count會被strlen(strSource)+ 1取代。

6、其他不常用函數,包括將字符串轉換成數字的函數、字符檢測函數、字符大小寫轉換函數等。

發佈了14 篇原創文章 · 獲贊 5 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章