Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с strcat

62K
16 октября 2010 года
NFL
6 / / 16.10.2010
Есть задача: Пользователь вводит массив чисел через запятую, необходимо найти максмальный элемент(-ы), и заменить на 0, и вывести видоизмененный массив.
Собственно, есть фрагмент кода:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
char seps[] = ",";
int a[]={0};
int k=0;
int max=0;
char *token;
char *t2;
char *str;
str=Edit1->Text.c_str();
token=strtok(str, seps);
max=StrToInt(token);
while(token != NULL)
{
a[k]=StrToInt(token);
k++;
if (StrToInt(token)>max)
{
max=StrToInt(token);
}

token = strtok(NULL, seps);
}
for (int i=0; i<k; i++)
if (a==max)
a=0;
for (int i=0; i<k; i++)
{
str=strcat(str, IntToStr(a).c_str());
}
ShowMessage(str);
}
Однако, вылетает с ошибкой. Помогите разобраться, надо срочно...
7
16 октября 2010 года
@pixo $oft
3.4K / / 20.09.2006
В какой строке вылетает,с какой ошибкой?Телепатов же не существует!
297
16 октября 2010 года
koodeer
1.2K / / 02.05.2009
Моя видеть классический ашыпка:
Цитата: NFL

str=Edit1->Text.c_str();



И, да, присоединяюсь к словам @pixo $oft.

62K
16 октября 2010 года
NFL
6 / / 16.10.2010
я с борланд впервой работаю :)
вылетает с ошибкой Project raised exception class EConvert error with message ''
и еще, в чем ошибка с str=Edit1->Text.c_str();?
297
17 октября 2010 года
koodeer
1.2K / / 02.05.2009
Так, ошибка выяснена. А в какой строке она происходит? (подсказка: два клика по описанию сильно помогают!)

str=Edit1->Text.c_str(); - Нужно не присваивать указатель, а копировать данные. strcpy решает! Не забываем выделить память под строку!

Об исполнении доложить.
247
17 октября 2010 года
wanja
1.2K / / 03.02.2003
Ошибка в том, что ты присваиваешь указатель. strcpy тебе в руки.
62K
17 октября 2010 года
NFL
6 / / 16.10.2010
все, разобрался, strcpy действительно то что нужно :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог