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

Не меняется значение указателя - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужна функция для суммирования матриц http://www.cyberforum.ru/cpp-beginners/thread774656.html
нужна функция для сложения матриц, естественно что складывать можно только равные матрицы, то по этому должно быть сообщение об ошибке что матрицы не равны #include "stdafx.h" #include <iostream> #include <time.h> using namespace std; //Функция выделения памяти для матрицы int** MemMatr(int n, int m)
C++ Отличия typedef от объявлений Собственно в чем отличия между : typedef struct { double x, y; bool worldDestroyed; int witcherCount; } everythingStruct; // от http://www.cyberforum.ru/cpp-beginners/thread774649.html
C++ Динамический двухмерный массив
ИМХО директива include предназначена для включения документа в тело JSP НА ЭТАПЕ ТРАНСЛЯЦИИ JSP В СЕРВЛЕТ , а не во время выполнения , соответственно значение аттрибута file должно содержать статичный URL и не может содержать JSP expression.
C++ Входит ли точка в заштрихованную область?
Добрый вечер! Собственно дан график: Нужно создать программу, которая будет проверять, входит ли точка (вводит пользователь) в этот график (заштрихованная область). Вопросов несколько: Самый главный пожалуй: как проверить, входит ли точка в треугольник? 2) Что делать, если вершина нижнего треугольника не дана :wall: ?
C++ Нахождение площадей пересечения случайных прямоугольников http://www.cyberforum.ru/cpp-beginners/thread774591.html
Предположим у меня есть некоторое количество прямоугольников (точек x;y которые образуют прямоугольники, а так же точки пересечения прямоугольников) расположенных случайно в декартовой системе координат, они могут пересекаться и образовывать площадью своего сечения случайные четырехугольники, треугольники, либо один прямоугольник может находиться внутри другого - как найти наибольшую площадь...
C++: IDE, инструментарий Не создается проект An error occurred while creating or opening the C++ browsing database file F:/opp/11/11.sdf. IntelliSense and browsing information will not be available for C++ projects. Ensure that Microsoft SQL Server Compact 3.5 is installed and that no other applications are accessing the file. If this problem persists, delete the file and reopen the solution. подробнее

Показать сообщение отдельно
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
29.01.2013, 19:37     Не меняется значение указателя
Написал функцию для подсчёта количества подстрок. При вызове на строках, которые в main вместо 3 выдаёт ответ 4. На остальных строках ответ верный. Это связано с тем, что в цикле while в функции подсчёта подстрок на одной итерации, почему-то, не изменяется указатель на str (смотреть комментарии). Как это объяснить???

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static int SearchSub(const char *str, const char *substr)
{
    int count = 0;
    int n = strlen(substr);
    
    while(strstr(str, substr) != NULL){
        count++;
        str += n;         //вот тут после 2-ой итерации не изменяется указатель str, почему???
    }
    
    return count;
}
 
int main(void){
    cout << ::SearchSub("121223124", "12") << endl;
 
    return 0;
}
Добавлено через 2 минуты
Я разобрался, спасибо.

Добавлено через 1 минуту
Так работает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
static int SearchSub(const char *str, const char *substr)
{
    int count = 0;
    int n = strlen(substr);
    
    while(str = strstr(str, substr)){
        count++;
        str += n;
    }
    
    return count;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru