簡體   English   中英

返回指向C樣式字符串(C ++)中字符最后一次出現的指針

[英]Return a pointer to the last appearance of a character in a C-Style string (C++)

返回指向c出現在s內部的最后一個外觀的指針,如果c沒有出現在s內部,則返回nullptr(0)。

#include <string>
#include <iostream>
#include <cassert>
using namespace std;

const char* myStrRChr(const char* s, char c)
{
    int curIdx = 0;
    char last;

    while (s[curIdx] != '\0')
    {
        if (s[curIdx] == c)
            last = s[curIdx];
        curIdx++;
    }
    if (s[curIdx] == c)
        return last;
    else
        // return '\0', nullptr, NULL
        return "";
}


int main()
{
    char cstr[50] = "Abadabadoo!";
    char buf[10];
    const char * cat = "cat";
    char dog[] = "Labradoodle";

    cout << "\nmyStrRChr(cstr, 'a') expects adoo!" << endl;
    cout << "  -- " << myStrRChr(cstr, 'a') << endl;

    return 0;
}

此代碼返回“ adabadoo!”。 我無法確定如何獲取“ char c”的最后一個實例。

您可以通過獲取指向字符串結尾的指針並遞減字符串以搜索字符c以及指向字符串開頭的指針以了解在何處停止循環來實現此目的:

const char *mystrrchr(const char *str, char c)
{
    int len = strlen(str);
    char *p = const_cast<char *>(&str[len-1]);
    char *stop = const_cast<char *>(&str[0]);
    while(p>=stop)
    {
        if(*p==c)
        {
            return p;
        }
        p--;
    }
    return nullptr;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM