Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

C++ помогите найти ошибку

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Artificial Intelligence



Зарегистрирован: 28.01.2006
Сообщения: 4

СообщениеДобавлено: Сб Янв 28 2006 22:21    Заголовок сообщения: C++ помогите найти ошибку Ответить с цитатой

В функции delete_keword неработает одна строчка почему немогу понять, почему

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

//----------------------
void input_text(char *text);
int find(char *text, char *keyword, int keyword_length);
void delete_keyword(char *text, char *keyword, int keyword_length, char *text_after);
void out_text(char *text, char *text_after);
//----------------------

int main(void)
{
char *text,*text_after,keyword[81];
int count;
//-------------------------------------
printf("\nInput text, after press \"Enter\".\n");
input_text(text);
printf("\n%s\n",text);
printf("Input keyword(maximum 80 simbols).\n");
scanf("%s",keyword);
printf("Input count of keyword.\n");
scanf("%d",&count);
//--------------------------------------
if(count==find(text,keyword,strlen(keyword)))
{
delete_keyword(text, keyword, strlen(keyword),text_after);
out_text(text,text_after);
}
else
{
printf("\nProgramm finish work.\n");
}
getch();
return 0;
}

//-------fuction------------
void input_text(char *text)
{
char temp;
int i=0;
while((temp=getche())!='\r')
{
text=(char*)realloc(text,(i+2)*sizeof(char));
text[i]=temp;
i++;
}
text[i]='\0';
}


int find(char *text, char *keyword, int keyword_legth)
{
int i,count=0;
for(i=0; text[i]!='\0'; i++) if(memcmp(text+i,keyword,keyword_legth) == 0) count++;
return count;
}


void delete_keyword(char *text, char *keyword, int keyword_length,char *text_after)
{

int index=0,i;
for(i=0;i<strlen(text); i++)
{
if(memcmp(text+i,keyword,keyword_length) == 0) i=i+keyword_length;
text_after=(char*)realloc(text_after,(index+2)*sizeof(char));
text_after[index]=text[i];//<--не работает
text_after[index+1]='\0';
index++;
}
}

void out_text(char *text, char *text_after)
{
printf("Text: %s\nText after: %s", text, text_after);

}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kocherman



Зарегистрирован: 06.01.2006
Сообщения: 88
Откуда: Обнинск

СообщениеДобавлено: Сб Янв 28 2006 22:45    Заголовок сообщения: Ответить с цитатой

у тебя не работает и функция input_text
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Artificial Intelligence



Зарегистрирован: 28.01.2006
Сообщения: 4

СообщениеДобавлено: Вс Янв 29 2006 00:32    Заголовок сообщения: Ответить с цитатой

нет она работает, я компилю в dev-c++
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Пн Янв 30 2006 10:36    Заголовок сообщения: Ответить с цитатой

Есть угроза выхода за пределы массива, если ключевое слово в конце строки, недурно бы проверять после строки
Код:

 if(memcmp(text+i,keyword,keyword_length) == 0) i=i+keyword_length;

И так трахать realloc вовсе не культурно, почитайте его описание, и вы ужаснетесь сколько лишней работы будет делать ваш компьютер....

А что пишет?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Artificial Intelligence



Зарегистрирован: 28.01.2006
Сообщения: 4

СообщениеДобавлено: Пт Фев 03 2006 01:54    Заголовок сообщения: Ответить с цитатой

Я уже рахобрался с этой программой, все таки бажила процедура ввода текста хотя я и не понял почему, просто перепесал её только немного подругому, точнее описал это другими "словами", а на счет реаллока это не принципиально мне просто нужно было на скорую руку код написать
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...