Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.04.2008, 16:46   #1
Atij1
 
Аватар для Atij1
 
Регистрация: 13.04.2008
Сообщений: 3
По умолчанию Пожалуйста помогите разобраться)

Добрый день. У меня возникла следующая проблема: я написал программу котая удаляет все подстроки из строки, она работает нормально до того момента пока я не ввиду подстроку идентичную строке, в "output" выводится "Borland C++ - Copyright 1991 Borland Intl.", и после этого прога не работает даже для тех случаев для кот-ых работала раньше, помогите пожалуйста разобраться в чём проблема. Вот код:

Код:
#include <fstream.h>
#include <string.h>
#include <stdio.h>

ifstream input("input.txt", ios::in);
ofstream output("output.txt", ios::out);

void delete_str(char* str1, char* str2, char* str3)
{
    char *ptr = NULL;

    str3[0] = '\0';

    while ( ptr != strstr(str1, str2))
    {
	ptr=strstr(str1,str2);
	strncat(str3, str1, ptr - str1);
	str1 = ptr + strlen(str2);
    }

strcat(str3, str1);

output<<"obrazovannaya stroka:"<<endl<<str3;

}

int main()
{

    char str3[256];
    char str1[256], str2[256];

    input>>str1;
    output<<"izhodnaya stroka:"<<endl<<str1<<endl;
    input>>str2;
    output<<"izhodnaya podstroka:"<<endl<<str2<<endl;

    delete_str(str1,str2,str3);

    return 0;
}
Модератор: При оформлении кода необходимо использовать теги code.

Последний раз редактировалось Carbon; 13.04.2008 в 19:13.
Atij1 вне форума
Старый 13.04.2008, 19:57   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Я чуток твою прогу переделал:

Код:
#include <fstream.h>
#include <string.h>
#include <stdio.h>


ifstream input("input.txt", ios::in);
ofstream output("output.txt", ios::out);

void delete_str(char* str1, char* str2, char* str3)
{
        char *ptr = NULL;
        char err_str[]="***String is empty***";
        char empty[]="";

        str3[0] = '\0';

        do
        {
                ptr=strstr(str1,str2);
                strncat(str3, str1, ptr - str1);
                str1 = ptr + strlen(str2);
        }
        while ( ptr!=NULL );

        if(strcmp(str3,empty)==0)  
                strcpy(str3, err_str);

        output<<"obrazovannaya stroka:"<<endl<<str3;

}
int main(int argc, char* argv[])
{
        char str3[256];
        char str1[256], str2[256];

        input>>str1;
        output<<"izhodnaya stroka:"<<endl<<str1<<endl;
        input>>str2;
        output<<"izhodnaya podstroka:"<<endl<<str2<<endl;

delete_str(str1,str2,str3);

        return 0;
}
Так все по идее арбайтен должно. Протестируй ее если че не так, говори, исправим. И правила форума читай.
MaTBeu вне форума
Старый 13.04.2008, 20:21   #3
Atij1
 
Аватар для Atij1
 
Регистрация: 13.04.2008
Сообщений: 3
По умолчанию

Спасибо большое=) Вот только один вопросие остался, что будет если ввести огромное количество символов в исходную строку, не подскажете почему вылетает, и как это сисправить? Ещё раз спасибо=)
Atij1 вне форума
Старый 13.04.2008, 20:30   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

У тебя под строки выделяется 256 символов. Поэтому и вылетает. Выделяй больше и будет работать.
MaTBeu вне форума
Старый 13.04.2008, 20:32   #5
Atij1
 
Аватар для Atij1
 
Регистрация: 13.04.2008
Сообщений: 3
По умолчанию

Спасибо за всё =) Удачи=)
Atij1 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помоги разобраться с ошибкой, пожалуйста Turok Паскаль, Turbo Pascal, PascalABC.NET 4 17.06.2008 22:58
ГОРИТ ДИПЛОМ!!!! пожалуйста помогите разобраться с программой alexs2141 Фриланс 6 03.06.2008 20:30
Помогите разобраться Proof БД в Delphi 13 19.05.2008 10:59