2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Задачка на динамические строки
Сообщение21.03.2017, 09:28 
Здравствуйте. Разбираюсь с динамическими строками. Задачка удалить из строки цифры и спец. символы.
код: [ скачать ] [ спрятать ]
Используется синтаксис C
#include "stdafx.h"
#include <conio.h>
#include <string.h>

char * AllocStr(int n);
void FreeStr(char* Str);

char * InputStr();
char * DelSpec(char* St, char* Spec);

int main()
{
        char* specArr = "#@$%&01234567890";

        int n;

        printf("Enter size char array:");

        scanf("3%d", &n);

        char * Str = AllocStr(n);

        Str = InputStr();

        printf("This string:");
        printf(" %3s", Str);

        printf("\n");

        Str = DelSpec(Str, specArr);

        FreeStr(Str);
        _getch();
        return 0;
}

char * AllocStr(int n)
{
        return new char[n];
}

void FreeStr(char * Str)
{
        delete Str;
}

char * InputStr()
{
        char * s = 0;
        scanf("%s", s);
        return s;
}

char* DelSpec(char * St, char * Spec)
{
        for (int i = strlen(St) - 1; i >= 0; i--)
        {
                if (strchr(Spec, St[i]))
                {
                        printf(" %#010p", St + i);
                        strcpy(St + i, St + i + 1);
                }
        }
        return St;
}
 

getch не работает, так как его теперь нет в стандарте. Правильно ли я выделяю и очищаю память? Делал по аналогии с одномерными массивами чисел. Наколхозил ввод. Выпадает ошибка на стадии ввода.
Используется синтаксис C
int* allocMas(int n)
{
    return new int[n];
}
void freeMas(int* Arr)
{
    delete Arr;
}

 
 
 
 Re: Задачка на динамические строки
Сообщение21.03.2017, 12:49 
ptr = new T[] требует соответственного delete[] ptr

InputStr написана полностью неправильно, она вообще не выделяет никакой памяти, а пытается записывать данные из клавиатуры в участок памяти с адресом 0. Это не может работать.

 
 
 
 Re: Задачка на динамические строки
Сообщение24.03.2017, 16:12 
aa_dav
Все оказалось намного проще. gets_s теперь правит балом.

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group