Форум программистов, компьютерный форум CyberForum.ru

Аналог strrchr - C++

Восстановить пароль Регистрация
 
genaryok
21 / 21 / 4
Регистрация: 18.10.2013
Сообщений: 62
13.11.2013, 17:45     Аналог strrchr #1
Проверьте аналог strrchr кому не лень пожалуйста. Компилятор любит выдавать ошибки при тестировании программы. Может чего глупого написал и не замечаю?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
 
char *mystrrchr(char *a, int s)
{
    int j=strlen(a)-1;
    if(j==0) return &a[0];
    while(a[j]!=a[0])
    {
        if(a[j]==s)
            return &a[j];
        else j--;
    }
    return NULL;
}
 
void main()
{
    char *str=new char[81];
    cout<<"Enter string\n";
    cin.getline(str, strlen(str));
    char s;
    cout<<"Enter symbol : ";
    cin>>s;
    char *result=mystrrchr(str,s);
    cout<<result<<endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2013, 17:45     Аналог strrchr
Посмотрите здесь:

C++ strtoupper аналог в С++ ...
C++ Аналог AnsiString в Qt
C++ Ошибка в функции strrchr
C++ Аналог VB-функции Like
C++ Аналог atoi в С++
Аналог Readkey C++
C++ Object аналог в С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
589 / 293 / 19
Регистрация: 06.07.2013
Сообщений: 966
Завершенные тесты: 1
13.11.2013, 17:54     Аналог strrchr #2
Цитата Сообщение от genaryok Посмотреть сообщение
Компилятор любит выдавать ошибки при тестировании программы.
Может все таки при компиляции?
какие именно ошибки?

Добавлено через 1 минуту
Цитата Сообщение от genaryok Посмотреть сообщение
int j=strlen(a)-1;
если размер строки 0 то j будет (char)(-1)
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.11.2013, 17:55     Аналог strrchr #3
Цитата Сообщение от genaryok Посмотреть сообщение
char *str=new char[81]; cout<<"Enter string\n"; cin.getline(str, strlen(str));
cтроку выделили, но не инициализировали, поэтому strlen() может вернуть черти что.
И вообще, используйте std::string
genaryok
21 / 21 / 4
Регистрация: 18.10.2013
Сообщений: 62
13.11.2013, 17:59  [ТС]     Аналог strrchr #4
Цитата Сообщение от Raali Посмотреть сообщение
Может все таки при компиляции?
какие именно ошибки?
Ну я немного не правильно сказал, не ошибку, а "Прекращена работа программы"

Добавлено через 1 минуту
Цитата Сообщение от Tulosba Посмотреть сообщение
cтроку выделили, но не инициализировали, поэтому strlen() может вернуть черти что.
И вообще, используйте std::string
Согласен, но проблема не в ней. Проблема с функцией, при некоторых входных данных прекращает работу
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.11.2013, 18:06     Аналог strrchr #5
Цитата Сообщение от genaryok Посмотреть сообщение
но проблема не в ней
Проблем может быть несколько.
А функцию Вы что-то нагородили:
C++
1
2
3
4
5
6
7
8
9
char* mystrrchr(char *a, int s)
{
    while( *a )
    {
        if( *a == s ) return a;
        a++;
    }
    return 0;
}
genaryok
21 / 21 / 4
Регистрация: 18.10.2013
Сообщений: 62
13.11.2013, 18:15  [ТС]     Аналог strrchr #6
Цитата Сообщение от Tulosba Посмотреть сообщение
Проблем может быть несколько.
А функцию Вы что-то нагородили:
C++
1
2
3
4
5
6
7
8
9
char* mystrrchr(char *a, int s)
{
    while( *a )
    {
        if( *a == s ) return a;
        a++;
    }
    return 0;
}
Да, это так, только это strchr(первое вхождение символа) я пишу аналог strrchr(последнее вхождение символа) у да ладно, сейчас подкорректирую и все будет ок. Спасибо)
Байт
 Аватар для Байт
14331 / 9162 / 1321
Регистрация: 24.12.2010
Сообщений: 16,744
13.11.2013, 18:36     Аналог strrchr #7
Функция составлена с таким количеством ошибок, что разбирать ее бессмысленно. Вот нормальный вариант.
C++
1
2
3
for(j=strlen(a) - 1; j>=0; j--)
  if (a[j]==s) return a+j;
return NULL;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2013, 19:15     Аналог strrchr
Еще ссылки по теме:

аналог realloc() в С++ C++
C++ Аналог sprintf
C++ Аналог goto
Аналог flushall C++
C++ Аналог wctomb

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
genaryok
21 / 21 / 4
Регистрация: 18.10.2013
Сообщений: 62
13.11.2013, 19:15  [ТС]     Аналог strrchr #8
Цитата Сообщение от Байт Посмотреть сообщение
Функция составлена с таким количеством ошибок, что разбирать ее бессмысленно. Вот нормальный вариант.
C++
1
2
3
for(j=strlen(a) - 1; j>=0; j--)
  if (a[j]==s) return a+j;
return NULL;
Я уже переписал функцию, но все равно спасибо
Yandex
Объявления
13.11.2013, 19:15     Аналог strrchr
Ответ Создать тему
Опции темы

Текущее время: 03:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru