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

Реализация функции Substring с помошью указателей - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.89
cs_from_hell
0 / 0 / 0
Регистрация: 25.05.2010
Сообщений: 19
21.07.2010, 11:26     Реализация функции Substring с помошью указателей #1
Доброго времени суток!
Решил реализовать функцию Substring в C++, с делал это так:

C++
1
2
3
4
5
6
7
8
9
10
11
char* SubString(char* str, int index, int length)
{
     char resChar[255] = "";
     for(int j = index; j < (index + length); j ++)
     {
          char c [2];
          wsprintf(c, "%c", str[j]);
          strcat(resChar, c);
     }
     return resChar;
}
Теперь собственно вопрос. Как это реализовать с помощью указателей?
Есть такой пример:
C++
1
2
3
4
5
6
7
8
9
char s[256], *p = s, *p2 = s;
gets(s);
while(*p) // Пока в строке есть символы
{ if( !ispunct(*p) && !isspace(*p) )
*(p2++) = *p; // Если не знак препинания, копируем
p++; // Переходим к следующему символу
}
*p2 = '\0';
puts(s);
Делаю подобным образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
char* SubString2(char* str, int index, int length)
{
     char* p = str;
     
     while(*p)
     {
             *(p++) = *str; //ругается в этом месте
             p++;
     }
     *p= '\0';
     return str;
}
p.s. компилятор DevC++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2010, 11:26     Реализация функции Substring с помошью указателей
Посмотрите здесь:

C++ Передача указателей в функции
С помошью одной функции посчитать результат для двух классов C++
C++ составить программу с помошью функции
Реализация программы с использованием ссылок и указателей C++
даны 2 последовательности в файлах, в двух разных, нужно их обьединить и отсортировать по возрастанию. Но нужно сделать прогу с помошью указателей C++
C++ С++ вычисление функции с помошью разложения в ряд
Создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей C++
Массив указателей на функции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
21.07.2010, 12:11     Реализация функции Substring с помошью указателей #2
Думаю, лучше сделать так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
char * subStr = new char [lenght + 1];
 
    char * p = str;
    char * p1 = subStr; 
 
    ...
 
    int i = 0;
    while (...)
    {
        *p1 = *p;
        p1++;
        p++;
        i++;
    }
    *p1 = '\0';
 
    return subStr;
Но это не всё. А что если index или lenght больше чем длина строки?
Попробуйте доделать сами.
cs_from_hell
0 / 0 / 0
Регистрация: 25.05.2010
Сообщений: 19
21.07.2010, 12:41  [ТС]     Реализация функции Substring с помошью указателей #3
Спасибо! Все работает нормально!
Дополнил так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
     char * subStr = new char [length + 1];
     char * p = str;
     char * p1 = subStr;
     
     int i = 0;
     while (i < length + index)
     {
          if(i >= index)
          {
               *p1 = *p;
               p1++;
          }
          p++;
          i++;
     }
     *p1 = '\0';
     return subStr;
теперь если задается длина больше чем оставшаяся будет выдаваться то что осталось, например из "0123456" если обрезать по 2 и 15 результат получим 23456. Если индекс будет больше длины строки получим пустую строку.
Yandex
Объявления
21.07.2010, 12:41     Реализация функции Substring с помошью указателей
Ответ Создать тему
Опции темы

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