實現C字串常用函式

2021-06-16 17:59:11 字數 1605 閱讀 3357

//字串長度

int stringlen(const char *str)

//字串比較

int stringcompare(const char *dst, const char *src)

//字串複製

char * stringcopy(char *dst, const char *src)

//字串連線

char * stringconcat(char *dst, const char *src)

//獲取子串

char * substring(const char *str, const char *sub)

return null;

}

//字串反轉

char* stringreverse(char* str)

return str;

}

//字串切割

char * stringsplit ( char *string, const char *control )

; //切割標記每1個字元前5個位元組決定在該陣列中的位置,

//因為5個2進製最大數為31也就是包含0在內不同的32個數,對應陣列的32個元素,

//後3個位元組用來決定元素中儲存的數字,

//為了保證元素內數字不會重複,使用2進製單個位來表示這個數的後3個位元組。

//因為3個2進製最大數為7,從0到7共8個數,而1個char型別正好8位。

//通過*ctrl >> 3決定標記字元所在的陣列位置,而每乙個位置上的值絕對不會超過8種,即0到7的值,也就是3個二進位制。

//通過1 << (*ctrl & 7)與陣列位置上的值與運算,將位值新增到陣列元素中。

//其實就相當於乙個2維陣列,用字元的前5位標引x座標,用字元的後3位索引y座標。

do while (*ctrl++);

//判斷是否是第二次切割

if (string)

str = string;

else

str = token;

//檢測陣列中對應位置上對應位上的值是否為1,即判斷該字元是否是要被切除的內容。

while ( (map[*str >> 3] & (1 << (*str & 7))) && *str )

str++;

//過濾掉切除的內容後記錄當前的指標位置

string = str;

//找到下乙個切割點,將其設定為\0後自加。

for ( ; *str ; str++ )

if ( map[*str >> 3] & (1 << (*str & 7)) )

//記錄切割點到靜態區

token = str;

if ( string == str )

return null;

else

return string;

}

C常用的字串函式實現

查詢字串 source 中 是否有指定的子串出現,如果有返回第乙個匹配的字元 param source 源 param chars 目標 return 返回值 char find char0 char const source,char const chars char const sc1,sc2 ...

C字串函式實現

blog item 7184aa114e1ca3cca6ef3f3c.html 這裡總結了一部分函式 memcpy,memset,memmove,strcpy,strcat,strlen,strcmp,strncmp,strstr 等函式的具體實現過程。ifndef null define null...

C 常用的字串處理函式實現

以下是一些標準庫沒有實現的函式,我覺得很方便就寫了,估計會不定時更新。1 根據乙個檔案的路徑獲取檔名 23 std string file name const std string path 47 8910 根據乙個檔案的路徑獲取該檔案的路徑 1112 std string base name c...