C語言中文網 目錄

strchr和strrchr函數及用法,C語言strchr和strrchr函數詳解

如果需要對字符串中的單個字符進行查找,那么應該使用 strchr 或 strrchr 函數

其中,strchr 函數原型的一般格式如下:

char *strchr(const char *s, int c);

它表示在字符串 s 中查找字符 c,返回字符 c 第一次在字符串 s 中出現的位置,如果未找到字符 c,則返回 NULL。也就是說,strchr 函數在字符串 s 中從前到后(或者稱為從左到右)查找字符 c,找到字符 c 第一次出現的位置就返回,返回值指向這個位置,如果找不到字符 c 就返回 NULL。

相對于 strchr 函數,strrchr 函數原型的一般格式如下:

char *strrchr(const char *s, int c);

與 strchr 函數一樣,它同樣表示在字符串 s 中查找字符 c,返回字符 c 第一次在字符串 s 中出現的位置,如果未找到字符 c,則返回 NULL。但兩者唯一不同的是,strrchr 函數在字符串 s 中是從后到前(或者稱為從右向左)查找字符 c,找到字符 c 第一次出現的位置就返回,返回值指向這個位置。下面的示例代碼演示了兩者之間的區別:
int main(void)
{
    char str[] = "I welcome any ideas from readers, of course.";
    char *lc = strchr(str, 'o');
    printf("strchr: %s\n", lc);
    char *rc = strrchr(str, 'o');
    printf("strrchr: %s\n", rc);
    return 0;
}
對于上面的示例代碼,strchr 函數是按照從前到后的順序進行查找,所以得到的結果為“ome any ideas from readers,of course.”; 而 strrchr 函數則相反,它按照從后到前的順序進行查找,所以得到的結果為“ourse.”。

示例代碼運行結果為:
strchr: ome any ideas from readers, of course.
strrchr: ourse.

最后還需要注意的是,為什么函數的“c”參數是 int 類型,而不是“char”類型呢?

其實原因很簡單,這里用的是字符的 ASCII 碼(因為每個字符都對應著一個 ASCII 碼),這樣在傳值的時候既可以傳“char”類型的值,又可以傳“int”類型的值(0~127)。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo