2013-10-12 3 views
-2

Я попытался написать функцию lastindexOf для моего класса C++. После того, как я пробовал в течение 2 недель, я все еще не могу заставить его работать. Сначала я пытался следовать логике этого сообщения: CString find the last entry, но так как они используют класс CString вместо класса char, мне не удастся дублировать код для класса char. Я также пытаюсь использовать strstr, но мне тоже не повезло. Буду признателен за любую помощь.
вот код, который я придумал до сих пор:последний индекс строки стиля C в C++

#include

using namespace std; 
int lastIndexOf(char *s, char target); 
int main() 
{ 
char input[50]; 
cin.getline(input, 50); 
char h = h; 
lastIndexOf(input, h); 
return 0; 
} 
int lastIndexOf(char *s, char target) 
{ 
int result = -1; 

while (*s != '\0') 
{ 
    if (*s == target){ 
    return *s; 
}} 
return result; 
} 
+1

Вы ищете 'strchr()'. И ваша ошибка, кстати, заключается в том, что вы не увеличиваете счетчик циклов цикла while, так что он будет бесконечным. –

+1

Для lastIndexOf(), strrchr(), вероятно, будет лучше. –

ответ

2

Попробуйте это:

int lastIndexOf(const char * s, char target) 
{ 
    int ret = -1; 
    int curIdx = 0; 
    while(s[curIdx] != '\0') 
    { 
     if (s[curIdx] == target) ret = curIdx; 
     curIdx++; 
    } 
    return ret; 
} 
Смежные вопросы