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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2013, 16:48   #1
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
Радость Вылетает на strcat

Доброго времени суток. Хотелось бы знать, какого фига вылетает:
Код:
char* result = new char[100500];
strcat( result, "pppppppp" );
Спасибо
WennY вне форума Ответить с цитированием
Старый 02.08.2013, 17:11   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

И что, думаешь, в той памяти, куда result указывает? Запиши хотя бы нулевой символ туда.
Somebody вне форума Ответить с цитированием
Старый 02.08.2013, 17:19   #3
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Во-первых у вас
Код:
result
- не нуль-терминированная строка.
Отсюда, при попытке склеить строки возникает ошибка: как склеить
Код:
"pppppppp"
с не нуль-терминированной строкой??
Добавьте
Код:
*result = '\0';
после
Код:
char* result = new char[100500];
И память освободить не забудьте.
Igor95 вне форума Ответить с цитированием
Старый 02.08.2013, 18:32   #4
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию

Цитата:
Сообщение от Igor95 Посмотреть сообщение
с не нуль-терминированной строкой??
Добавьте
Убойная вещь этот ваш сырой си, однако Заюзал старый-добрый стринг и все внезапно запахало В любом случае спасибо, не знал, что чары такие чары..
WennY вне форума Ответить с цитированием
Старый 02.08.2013, 19:59   #5
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от WennY Посмотреть сообщение
Убойная вещь этот ваш сырой си, однако
Сырой C? В C нет new, там malloc.
Somebody вне форума Ответить с цитированием
Старый 02.08.2013, 20:29   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Вместо того, чтоб добавлять 0 в конце, не проще ли воспользоваться strcpy()?
waleri вне форума Ответить с цитированием
Старый 02.08.2013, 20:52   #7
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию

Somebody, зато в плюсах есть, которые я и имел в виду.
WennY вне форума Ответить с цитированием
Старый 03.08.2013, 13:17   #8
frommars
Форумчанин
 
Регистрация: 02.07.2011
Сообщений: 144
По умолчанию

Цитата:
Сообщение от WennY Посмотреть сообщение
Убойная вещь этот ваш сырой си, однако Заюзал старый-добрый стринг и все внезапно запахало В любом случае спасибо, не знал, что чары такие чары..
Всё просто
Код:
char *result = malloc(100500);
memset(result, 0, 100500); //Start with clean memory
memcpy(result, "pppppppp", 8); // or strcpy/strcat(result, "pppppppp");

...

free(result); // Allways free memory
frommars вне форума Ответить с цитированием
Старый 03.08.2013, 13:47   #9
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Для зануления можно calloc. А с memcpy надо внимательнее смотерть, а то строка не null-terminated получится.
Somebody вне форума Ответить с цитированием
Старый 03.08.2013, 13:49   #10
frommars
Форумчанин
 
Регистрация: 02.07.2011
Сообщений: 144
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
Для зануления можно calloc. А с memcpy надо внимательнее смотерть, а то строка не null-terminated получится.
А мемсэт зачем я написал?
frommars вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
strcat проблема blacktener Общие вопросы C/C++ 1 14.10.2012 14:40
Реализация strcpy и strcat (С++) migimigi Помощь студентам 9 19.08.2012 23:20
strcat,strcpy Акоб Общие вопросы C/C++ 15 24.04.2011 23:58
Моя strcat Valter Общие вопросы C/C++ 5 12.02.2010 00:30
strcat larry Win Api 3 20.07.2009 12:44