與字串相關的函式

2021-10-19 15:39:15 字數 3013 閱讀 6554

一、求字串長度的函式

strlen

二、長度不受限制的字串函式

strcpy

strcmp

strcat

三、長度受限制的字串函式

strncpy

strncat

strncmp

四、字串查詢

strstr

strtok

五、錯誤資訊報告

strerror

一、求字串長度的函式

strlen

注意:1.strlen函式返回的是字串中'\0'前面出現的字元個數(不包含'\0')

2.該函式的引數型別是乙個char型別的指標,返回值是size_t(無符號整形)

3.因為返回值是size_t,所以不能用函式的返回值相比較或做運算

(挖個坑)  strlen的模擬實現(1.計數器的方式  2.遞迴的方式  3.指標減去指標的方式)

二、長度不受限制的字串函式

1.字串拷貝函式

strcpy

注意:1.要保證目標空間足夠大

2.目標空間必須可變,因此不能在第乙個引數前加const

引數型別:1.char *strdestination

2.char *strsource

返回型別:char*

strcpy的模擬實現

普通版(已引標頭檔案):

//strcpy的模擬實現

void my_strcpy(char *dest, char *src)

*dest = *src;

}int main()

高階版:

//strcpy的模擬實現

#include#includechar* my_strcpy(char *dest,const char *src)

return ret;//返回目標空間的起始位址

}int main()

2.字串追加函式

strcat

注意:1.要追加的目標空間必須足夠大

2.要追加的空間必須可修改

3.目標字串和源字串必須要有'\0'

4.不能自己給自己追加

引數:1.char *strdestination

2.char *strsource

返回型別:char*

模擬實現

//strcat的模擬實現

#includechar* my_strcat(char *dest, const char *src)

//2.追加

while (*dest++ = *src++);

return ret;

}int main()

3.字串比較函式

strcmp

注意:1.比較的是對應的字元的ascii碼值,不是比較字串長度

2.前者》後者,返回乙個》0的數;前者=後者,返回0;前者《後者,返回乙個<0的數

引數:1.char *str1

2.char *str2

返回型別:int

模擬實現

//strcmp的模擬實現

#includeint my_strcmp(const char *s1, const char *s2)

return *s1 - *s2;

}int main()

三、長度受限制的字串函式(與受限制的函式相比多了乙個引數size_t  count,用來記錄要操作的字元個數)

與長度不受限制的函式差不多,較簡單,不做過多說明

四、字串查詢函式

1.strstr(查詢子串)

能找到的情況:

//strstr查詢子串函式

#includeint main()

判斷能否找到的情況:

//strstr查詢子串函式

#includeint main()

模擬實現(難點)

//strstr模擬實現

#includechar* my_strstr(const char *s1,const char *s2)

if (*p2 == '\0')

return (char*)cp;

cp++;

} return null;

}int main()

2.strtok(切割字串)

char *

strtok

( char *

str,

const

char *

sep);

引數:1.要切割的字串

2.分割標記

大致用法如下:

//strtok

#includeint main()

; char p[30] = ".@";

strcpy(arr2, arr1);//將arr1拷貝到arr2,使得arr1得以保留,我們操作arr2

char *ret;//接收strtok函式的返回值,為乙個指標

//用迴圈的方式列印,第一次呼叫的時候第乙個引數傳參要傳字串,之後只用傳空指標就可以

for (ret = strtok(arr2,p); ret != null; ret = strtok(null, p))

return 0;

}

strtok函式的古怪之處在於它第一次呼叫的時候第乙個引數傳參要傳字串,而之後只用傳空指標,這是static的功勞,它幫助strtok函式每次呼叫之後都能保留原來指標的位置,而它開闢的記憶體不會隨著呼叫的結束而銷毀。

五、錯誤報告函式

字串相關函式

strcmp 比較字串 strcmpi 忽略大小寫比較字串 upper 轉換為大寫 blanks 產生空字串 strmatch 查詢匹配的字串 strjust 對齊字元陣列,包括左對齊,右對齊和居中 strrep 替換字串 strncmp 比較字串的前n個字元 lower 轉換為小寫 deblank...

字串相關函式

1.模擬實現strcpystrcpy str1,str2 函式是把從str2位址開始且含有null結束符的字串複製到以str1開始的位址空間中,而且str2和str1所指記憶體區域不可以重疊。這就要求str1必須有足夠的空間來容納str2的字串。模擬實現strcpy 0 也會被拷貝進去,返回值為ch...

字串相關函式整理

字串逆轉函式 1 可用標頭檔案裡的reverse函式,函式使用方法 string str reverse str.begin str.end 2 使用標頭檔案中的strrev函式,函式使用方法 string str strrev str 讀取字串 1 cin 2 cin.get 使用方法一 只能讀取...