C語言字符串操作

strtok

  • 定義:char *strtok(char s[], const char *delim);

  • s為要分解的字符串

  • delim為分隔符字符串

  • 當strtok()在參數(shù)s的字符串中發(fā)現(xiàn)參數(shù)delim中包含的分割字符時,則會將該字符改為\0 字符。在第一次調用時,strtok()必需給予參數(shù)s字符串,往后的調用則將參數(shù)s設置成NULL。每次調用成功則返回指向被分割出片段的指針

    #include <stdio.h>
    #include <string.h>
    
    void printArr(char *, int);
    
    int main() {
        char s[30] = "abc dedef  gdhi    de    jkl";
        const char *delim = "de";
        printArr(s, 30);
        printf("\n");
        char *result = strtok(s, delim);
        while (result) {
            printf("%s|%s\n", result, s);
            result = strtok(NULL, delim);
        }
        printArr(s, 30);
        return 0;
    }
    
    void printArr(char *s, int n) {
        for (int i = 0; i < n; i++) {
            printf("[%c#%-3d] ", s[i], s[i]);
        }
    }
    

    結果:

    [a#97 ] [b#98 ] [c#99 ] [ #32 ] [d#100] [e#101] [d#100] [e#101] [f#102] [ #32 ] [ #32 ] [g#103] [d#100] [h#104] [i#105]
    [ #32 ] [ #32 ] [ #32 ] [ #32 ] [d#100] [e#101] [ #32 ] [ #32 ] [ #32 ] [ #32 ] [j#106] [k#107] [l#108] [ #0  ] [ #0  ]
    
    abc |abc
    f  g|abc
    hi    |abc
        jkl|abc
    [a#97 ] [b#98 ] [c#99 ] [ #32 ] [ #0  ] [e#101] [d#100] [e#101] [f#102] [ #32 ] [ #32 ] [g#103] [ #0  ] [h#104] [i#105]
    [ #32 ] [ #32 ] [ #32 ] [ #32 ] [ #0  ] [e#101] [ #32 ] [ #32 ] [ #32 ] [ #32 ] [j#106] [k#107] [l#108] [ #0  ] [ #0  ]
    
4.png

注意:

  • 分割的字符串不能為常量
  • 第一次調用需要傳入需要分割的字符串,后面就傳入NULL。
  • 如果未找到分割的字符串,則范圍當前字符串的指針
  • 所有出現(xiàn)分割字符串的地方都會被過濾, 如上面代碼 dede
  • strtok會破壞被分解的字符串,調用前后不一致。我們看到運行結果,所有出現(xiàn)de的地方,第一個字符被替換成了'\0'。

strchr

  • 定義:char strchr(const char _Str,char _Val)

  • 回首次出現(xiàn)_Val的位置的指針,返回的地址是被查找字符串指針開始的第一個與Val相同字符的指針,如果Str中不存在Val則返回NULL

  • 返回值:成功則返回要查找字符第一次出現(xiàn)的位置,失敗返回NULL

    int main() {
        char s[30] = "abc dedef  gdhi    de    jkl";
        char *result = strchr(s, 'd');
        printf("%s\n", result);
        return 0;
    }
    

    結果:

    dedef  gdhi    de    jkl
    

strstr

  • 定義:char *strstr (const char *, const char *)
  • 判斷字符串str2是否是str1的子串。如果是,則該函數(shù)返回str2在str1中首次出現(xiàn)的地址;否則,返回NULL
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容