-
- Дополню немного, хоть уже и время прошло: длина строки определяется
strlen() рантайм, в отличие от sizeof() который времени компиляции.
Даже пишут, что оператор. ;-) В Паскале строки хранятся с указанием
длины, что хорошо 1) при работе с длинными 2)при выделении памяти:
сразу известен размер 3) может включать любой символ (в си не может
содержать 0). Но есть и подводный камень: в переменной какой
размерности будем длину хранить? Ещё в базах данных вроде
используется Dingo(182 знак., 09.10.2024 07:30)
- В VirtualPascal-е использовались хитрые строки. Они типа с нулем в
конце как у сишных, но по смещению -4 от начала хранилась длина в
виде 32-битного числа. - LightElf(09.10.2024 13:33)
- GAWK умеет в строки с нулём в середине. Говорят, почти все остальные awkи так не умеют. - SciFi(09.10.2024 13:37)
- Как правило, узнавать размер нужно для константных строк определённых в программе. В этом случае вполне можно отдельно сохранить (sizeof()-1) . Если строки - результат ввода, чтения из файла или передачи по каналам связи, то там их размеры выясняется в процессе. Есть только одно НО, все либы, за редким исключением, написаны под Сишные строки. - =AlexD=(09.10.2024 09:11)
- В VirtualPascal-е использовались хитрые строки. Они типа с нулем в
конце как у сишных, но по смещению -4 от начала хранилась длина в
виде 32-битного числа. - LightElf(09.10.2024 13:33)
- std::string_view - =AlexD=(08.10.2024 17:03)
- Размер объекта в байтах это сайзоф, а размер строки в символах это стрлен. ASDFS(13 знак., 05.10.2024 16:04)
- А зачем размер передавать? Указателя достаточно, строка в си нулем
заканчивается. - Visitor(05.10.2024 16:04)
- А вдруг размер уже известен ? Tyмблep(159 знак., 08.10.2024 16:47)
- Вы гораздо больше времени потратите бессмысленно, если будете
заниматься такими оптимизациями :-) - SciFi(08.10.2024 16:49)
- Ничего подобного. Tyмблep(283 знак., 08.10.2024 16:57)
- Так даже в древнем printf(), длины строки нет. Только указатель и
формат вывода. - Visitor(08.10.2024 19:49)
- Если вызвать strlen() страшно, то от принтфа вообще инфаркт
миокарда случится... - SciFi(08.10.2024 20:58)
- На ПИКе писал лет 20 назад, весь вывод в порт рукописный, putch(); putstr(), print() больше ресурсов проца жрал. - Visitor(08.10.2024 21:32)
- Если вызвать strlen() страшно, то от принтфа вообще инфаркт
миокарда случится... - SciFi(08.10.2024 20:58)
- Так даже в древнем printf(), длины строки нет. Только указатель и
формат вывода. - Visitor(08.10.2024 19:49)
- Ничего подобного. Tyмблep(283 знак., 08.10.2024 16:57)
- Вы гораздо больше времени потратите бессмысленно, если будете
заниматься такими оптимизациями :-) - SciFi(08.10.2024 16:49)
- А вдруг размер уже известен ? Tyмблep(159 знак., 08.10.2024 16:47)
- может туплю, но для размера строки принято звать strlen (не
sizeof), а если всякое типа sprintf, то оно не void, а возвращает
указатель на сразу после строки - Vit(05.10.2024 15:58)
- Точно! про strlen() я и забыл. Тяжелое восьмибитное детство. Всем спасибо. - IBAH(05.10.2024 16:11)
- похоже, что вместо puts притягивается посылка бинарных пакетов:)
для строк - Vit(05.10.2024 16:17)
- Проще, я стандартной библиотекой пользоваться начал когда пересел
на Кортекс и то весьма неохотно. От stdio до сих пор тошнит. - IBAH(05.10.2024 17:02)
- три капли валерьянки на стакан вискаря - и нервы как канаты:) - Vit(05.10.2024 18:27)
- Вот что значит две лишние капли валерианки!!!! - Balda(09.10.2024 07:56)
- Это мульт древний, мне 400 капель валерьянки и не перепутайте! Блин
402 дали... - Visitor(05.10.2024 19:18)
- "Главное, что не 404" - ответил робофициант. Toчкa oпopы(47 знак., 09.10.2024 09:30)
- Это фраза Громозеки из м/ф "Тайна третьей планеты" ;-) reZident(8 знак., 05.10.2024 21:32, youtube)
- три капли валерьянки на стакан вискаря - и нервы как канаты:) - Vit(05.10.2024 18:27)
- Проще, я стандартной библиотекой пользоваться начал когда пересел
на Кортекс и то весьма неохотно. От stdio до сих пор тошнит. - IBAH(05.10.2024 17:02)
- похоже, что вместо puts притягивается посылка бинарных пакетов:)
для строк - Vit(05.10.2024 16:17)
- Точно! про strlen() я и забыл. Тяжелое восьмибитное детство. Всем спасибо. - IBAH(05.10.2024 16:11)
- Дополню немного, хоть уже и время прошло: длина строки определяется
strlen() рантайм, в отличие от sizeof() который времени компиляции.
Даже пишут, что оператор. ;-) В Паскале строки хранятся с указанием
длины, что хорошо 1) при работе с длинными 2)при выделении памяти:
сразу известен размер 3) может включать любой символ (в си не может
содержать 0). Но есть и подводный камень: в переменной какой
размерности будем длину хранить? Ещё в базах данных вроде
используется Dingo(182 знак., 09.10.2024 07:30)