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

Удаление символов строки, используя указатель - C++

Восстановить пароль Регистрация
 
Falkon
2 / 2 / 0
Регистрация: 05.11.2012
Сообщений: 10
17.11.2012, 17:13     Удаление символов строки, используя указатель #1
Здравствуйте, помогите, пожалуйста, дописать код. Заранее спасибо за помощь.
Задание:
1. Ввести строку в символьный массив размером 60.
2. Выделить блок памяти, достаточный для размещения строки.
3. Переписать введённую строку во вновь выделенный блок памяти.
4. Используя указатель (-и), удалить из строки первые N символов. Значение N вводится пользователем.
Проблема возникает на 4 этапе. Никак не могу разобраться в указателях. Написал такой код ->
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main ()
{
    char s [60];
    int n;
    cout << "Enter string -> ";
    cin.getline (s,60);
    char* p=new char [ strlen (s)+1];
    strcpy_s (p,strlen (s)+1,s);
    cout << "Enter amount delsymbol -> "; 
    cin>>n;
    p+=n;    //функция удаления символов из сроки
    cout<<"Changed string -> "<< p <<endl;
    return 0;
}
Очень прошу помочь с кодом.

Добавлено через 6 минут
p.s.В принципе мой код выводит то, что нужно, но не удаляет первые символы. Мне подсказали переписать строку и установить нулевой байт. Переносить символы исходной строки, начиная с N на n символов назад и вывести новое состояние строки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2012, 17:13     Удаление символов строки, используя указатель
Посмотрите здесь:

C++ Удаление n символов из строки
Удаление символов из строки C++
удаление символов из строки! C++
Удаление символов из строки C++
C++ Удаление символов из строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
17.11.2012, 17:39     Удаление символов строки, используя указатель #2
C++
1
2
     memcpy(p,(p+n), (strlen(p)-n+1)*sizeof(p[0]));
    cout<<"Changed string -> "<< p <<endl;
Добавлено через 9 минут

Добавлено через 10 минут
И еще вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    #include <iostream>
using namespace std;
int main ()
{
    char s [60];
    int n;
    cout << "Enter string -> ";
    cin.getline (s,60);
    char* p=new char [ strlen (s)+1];
    strcpy_s (p,strlen (s)+1,s);
    cout << "Enter amount delsymbol -> "; 
    cin>>n;
    if (n<strlen(p)){
        int i;
        for(char *temp=p+n, i=0; *(p+i)=*temp; ++temp, ++i);
    }else{
        *p=0;
    }
    cout<<"Changed string -> "<< p <<endl;
    system("pause");
    return 0;
}
Falkon
2 / 2 / 0
Регистрация: 05.11.2012
Сообщений: 10
17.11.2012, 23:39  [ТС]     Удаление символов строки, используя указатель #3
Спасибо за старания, мне предпочтительней что-то наподобии 2 варианта, но он почему-то отказывается работать
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
17.11.2012, 23:42     Удаление символов строки, используя указатель #4
Он хоть компилируется?

Результат у меня:
Удаление символов строки, используя указатель
Falkon
2 / 2 / 0
Регистрация: 05.11.2012
Сообщений: 10
17.11.2012, 23:59  [ТС]     Удаление символов строки, используя указатель #5
аа нашёл у себя ошибочку и немного смутился от 2 ворнингов, а так код работает спасибо большое.
Yandex
Объявления
17.11.2012, 23:59     Удаление символов строки, используя указатель
Ответ Создать тему
Опции темы

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