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

где ошибка - C++

Восстановить пароль Регистрация
 
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
09.02.2014, 12:56     где ошибка #1
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
using namespace std;
 
char *get_substr(char *sub, char *str);
 
int main(){
    char *substr;
 
    substr = get_substr("три", "один два три четыре");
 
    cout << "подстрока найдена: " << substr;
 
    return 0;
}
 
//Возвращает указатель на подстроку или нулевой указатель,
//если подстрока не найдена.
char *get_substr(char *sub, char *str)
{
    int t;
    char *p, *p2, *start;
 
    for (t = 0; str[t]; t++)
    {
        p = &str[t];//начальная установка указателей
        start = p;
        p2 = sub;
 
        while (*p2 && *p2 == *p) //проверка на наличие подстроки
        {
            p++;
            p2++;
        }
        
        //Если p2 указывает на завершающий ноль (т.е на конец подстроки),
        //значит, вся подстрока найдена.
        if (!*p2)
        
            return start;//вернуть указатель на начало подстроки
        
    }
    return 0;
    
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2014, 12:56     где ошибка
Посмотрите здесь:

C++ Где ошибка??
C++ Где ошибка?!
где ошибка? C++
C++ Где ошибка?
И где ошибка? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
09.02.2014, 13:23     где ошибка #2
А что в коде не так? Разве что русские символы иероглифами выводит, замени их латиницей... А так в роде что хотел то и получил
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
09.02.2014, 14:03  [ТС]     где ошибка #3
Цитата Сообщение от mustimur Посмотреть сообщение
А что в коде не так? Разве что русские символы иероглифами выводит, замени их латиницей... А так в роде что хотел то и получил
http://codepad.org/utzD6SIE

Visual Studio такую же ошибку выдает
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11847 / 6826 / 771
Регистрация: 27.09.2012
Сообщений: 16,924
Записей в блоге: 2
Завершенные тесты: 1
09.02.2014, 14:08     где ошибка #4
Цитата Сообщение от PriZrаK Посмотреть сообщение
Visual Studio такую же ошибку выдает
потому что строковые литералы const char *
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
09.02.2014, 14:12  [ТС]     где ошибка #5
Цитата Сообщение от Croessmah Посмотреть сообщение
потому что строковые литералы const char *
Получается опечатка в книге
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
09.02.2014, 14:28     где ошибка #6
Цитата Сообщение от PriZrаK Посмотреть сообщение
Visual Studio такую же ошибку выдает
Это не совсем ошибка, а предупреждение, но код отрабатывал правильно.. Хотя я согласен их надо убирать...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2014, 14:55     где ошибка
Еще ссылки по теме:

C++ Где ошибка? С++
Где ошибка? C++
Где Ошибка C++

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

Или воспользуйтесь поиском по форуму:
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
09.02.2014, 14:55     где ошибка #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <wchar.h>
using namespace std;
 
const wchar_t *get_substr(const wchar_t *sub, const wchar_t *str);
 
int main(){
    std::setlocale(LC_ALL, "en_US.UTF-8");
    const wchar_t* substr = get_substr(L"три", L"один два три четыре");
 
    wcout << L"подстрока найдена: " << substr;
 
    return 0;
}
 
//Возвращает указатель на подстроку или нулевой указатель,
//если подстрока не найдена.
const wchar_t *get_substr(const wchar_t *sub, const wchar_t *str)
{
    const wchar_t *p = str, *p2 = sub, *start = NULL;
 
    while (*p)
    {
        start = p;
 
        while (*p && *p == *p2) //проверка на наличие подстроки
        {
            ++p; ++p2;
        }
        //Если p2 указывает на завершающий ноль (т.е на конец подстроки),
        //значит, вся подстрока найдена.
        if (!*p2)
        {
            return start;//вернуть указатель на начало подстроки
        }
        else
        {
            ++p;
        }
    }
    return NULL;
}
Yandex
Объявления
09.02.2014, 14:55     где ошибка
Ответ Создать тему
Опции темы

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