ПрограммированиеФорумОбщее

strncpy ошибка во время выполнения (2 стр)

Страницы: 1 2
#15
9:50, 26 сен 2010

0xdeadc0de
> виноватые уже умерли наверное
Страуструп вроде жив ещё

Aslan
> а что хочешь получить?
2 еденицы в начале, пргосто чтоб убедиться что эта конструкция работает, как оказалось не зря, вообще мне надо очень длинную строку разбить на много маленьких и засунуть их в контейнер, но опыта общения со строками мне явно не хватает)))

вопщем я хотел пройтись циклом по строке, и при определённых условиях копировать определённую часть строки в пустую строку, но вот как выдрать эту часть строки я не знаю

#16
10:54, 26 сен 2010

о, вот такая штука работает

char  *_Text = "qwertyuiop";  
    
    

    char  *_Text3 = new char[10];
     
    
    for (i=0;i<strlen(_Text);i++) 
    {
      if(_Text[i] == 't')
      {
        _Text3 = strncpy(_Text3,&_Text[i],5);
      }
      i++;
    }

только в ней мусор остаётся "tyuioНННННээээ««««««««ою"
вопщем то что ННННН это выделенная под этот указатель память, а дальше чтото левое идёт

#16
11:08, 26 сен 2010

Наверное ноль в конце забыл >_>

#16
11:17, 26 сен 2010

strncpy 0 не дописывает если скопировал n символов

#16
11:18, 26 сен 2010

Чудеса форума, я ваши ответы грохнул вместе со своим!
strncpy 0 не дописывает если скопировал n символов

#16
11:21, 26 сен 2010

Aslan
> strncpy 0 не дописывает если скопировал n символов
да там до strncopy гора мусора

GeniusIsme
> наверное ноль в конце забыл >_>
да, я не думал что его руками дписывать надо

#17
12:22, 26 сен 2010

Если надо найти букву Т и с неё скопировать ряд символов, то во первых есть функция поиска символа в строке strchr, и во вторых при копировании надо проверить что мы копируем, не нул ли, не вышли ли за край строки (у тебя копируется 5 символов независимо), вобщем куча приятного удовольствия. Затем использовать в цикле strlen() означает он будет вызываться каждый шаг цикла - это ужасно (и медленно).

Изучать основы С задавая вопросы на форуме это как минимум невежливо по отношению к тем, кто тебе мог бы помочь с более серьёзными вопросами. Потом, когда придёшь с серьёзным вопросом, у тебя уже будет репутация хелп-вампира, и будешь в первом же ответе послан ;)

#18
12:34, 26 сен 2010

kvakvs
> хелп-вампира
я не могу согласиться не с одним из перечисленных признаков, я гуглил по гэймдевру, по нету, читал статьи, и т.д.

спасибо всем за помощь

#19
12:39, 26 сен 2010

unknown
все правильно сработало, почитай хелп к strncpy

#20
12:43, 26 сен 2010
const char *dest = "qwertyuiop";
const char *src = "1234";

int len = strlen(dest);
char  *text = new char [len + 1];

memset(text, 0, len+1);
memcpy(text, dest, len);
char *p = strchr(text, 't');

if(p)
{ 
  int cp = 2;
  int index = p - text;
  if(len - index > cp)
    strncpy(p, src, cp);    
}

delete [] text;
#21
13:12, 26 сен 2010

спасибо

Страницы: 1 2
ПрограммированиеФорумОбщее

Тема в архиве.