天天看點

strpbrk、strspn、strchr 快速記憶!!!

strpbrk

strpbrk會周遊字元串s1的每一個字元,如果目前字元s2裡面也有目前周遊到的這個字元,那就馬上傳回目前字元的指針。

比如:

char s1[] = "GET http://www.baidu.com http1.1\r\n";
char* ret = strpbrk(s1, " \t"); 
           

此時指針ret指向GET後面的那個空格,因為周遊到那個空格發現strpbrk的第二個參數裡面也有一個空格,是以此時馬上傳回。

strspn

此函數與strpbrk剛好相反,它會周遊字元串s1的每一個字元,如果目前字元s2裡面沒有目前周遊到的字元,那就馬上傳回目前字元的下标。

比如:

char s1[] = "GET http://www.baidu.com http1.1\r\n";
size_t ret = strspn(s1, "GE"); // 輸出2
           

這個時候周遊到第三個字元T的時候,發現s2裡面沒有,立即傳回T的下标2.

還有一個strcspn函數,是strspn的雙胞胎,二者長得幾乎一樣然而功能完全相反。即:

周遊字元串s1的每一個字元,如果目前字元s2裡面有目前周遊到的字元,那就馬上傳回目前字元的下标

strchr

strchr和strpbrk功能一樣,周遊s,遇到值為c的字元就傳回。

而strrchr就是從後往前周遊s,遇到值為c的字元傳回。

繼續閱讀