s内に現れるc の最後の外観へのポインタを返し、sがs内にない場合はnullptr(0)を返します。Cスタイルの文字列内の最後の文字列へのポインタを返します(C++)
#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"の最後のインスタンスを取得する方法について私の心を包み込むことはできません。
インデックスではなくポインタが必要ですか? – mkmostafa
間違っていることを見つけ出す必要があります。 –
'while'ループは無限大です。これがあなたが使用しているコードだと確信していますか? – PaulMcKenzie