//字串長度
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...