Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 26.06.2015, 10:09   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 14,014
Написано 6,795 полезных сообщений
(для 20,917 пользователей)
ненависть: strtok

strtok

Никогда этой функцией не пользовался, так как всегда была возможность реализовать контекстно более рациональный механизм работы с токенами. А тут представилась свободная минутка почитать про эту непотокобезопасную, нереентерабельную жуть. Фиг бы с ним (зачастую) с потоками, да даже и для нереентерабельности, скрепя сердце, можно найти оправдание... ЭТА ШТА ТАКОЭ:
char str[] ="- This, a sample string.";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str," ,.-");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.-");
  }
(http://www.cplusplus.com/reference/cstring/strtok/)
Может функция возвращает указатели на токены, создавая их в куче? Нет - судя по адресам - указатели непосредственно на байты исходной строки. Но ведь она может быть const (хоть, согласно костылю стандарта, может быть объявлена и без соответствующего спецификатора) - а для закрытия токена необходимо перезаписать ближайший разделитель терминатором. Подобное надругательство у Страуструпа комментируется как "ошибки, обычно не выявляющиеся до стадии выполнения программы" и отмечается зависимость поведения от реализации. Так же упомянуто в разделе "Нежелательные особенности".
Всё что нужно, чтобы уронить программу, оформить обрабатываемую строку как литерал:
char *str ="- This, a sample string.";
Спецификатора const нет - ошибок при сборке нет - крах есть.
Не пользовался и не буду

Нафиг такую муть в стандартную либу пихать, посоны?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 26.06.2015, 11:54   #2
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,921
Написано 3,411 полезных сообщений
(для 9,319 пользователей)
Ответ: ненависть: strtok

Ну походу это Legacy.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (26.06.2015)
Старый 26.06.2015, 23:08   #3
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,569
Написано 544 полезных сообщений
(для 1,526 пользователей)
Ответ: ненависть: strtok

̶П̶о̶т̶о̶м̶у̶ ̶ч̶т̶о̶ ̶С̶и̶ ̶н̶е̶ ̶д̶л̶я̶ ̶н̶у̶б̶о̶в̶

Си же императивный язык, чо сказали ему то он и собрал, пример же обрушения приведен искусственный.
__________________
Junior Tools Programmer at Larian Studios
ПеКа: AMD Ryzen 1700X 8@3.4 ГГц, 16 Гб ОЗУ,

NVIDIA GTX 960 4 Гб, SSD Samsung 960 EVO 500 Гб
(Offline)
 
Ответить с цитированием
Старый 01.07.2015, 12:01   #4
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 14,014
Написано 6,795 полезных сообщений
(для 20,917 пользователей)
Ответ: ненависть: strtok

2mr.DIMAS

Да будь я
______и нубом преклонных годов
и то,
____без унынья и лени,
я СИшник бы выучил
_____________только за то,
что б
____ставить врагов на колени.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
Arton (01.07.2015), Skaner (09.07.2015)
Старый 01.07.2015, 13:04   #5
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,569
Написано 544 полезных сообщений
(для 1,526 пользователей)
Ответ: ненависть: strtok

Какой посыл сея стиха? Я не называл тебя нубом, просто Си коварный и опасный язык при неверном обращении.
__________________
Junior Tools Programmer at Larian Studios
ПеКа: AMD Ryzen 1700X 8@3.4 ГГц, 16 Гб ОЗУ,

NVIDIA GTX 960 4 Гб, SSD Samsung 960 EVO 500 Гб
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (01.07.2015)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 21:31.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com