9 / 9 / 1
Регистрация: 09.07.2009
Сообщений: 636
|
||||||
1 | ||||||
Длина строки (sizeof и strlen)31.07.2023, 18:08. Показов 1729. Ответов 8
Метки нет Все метки)
(
В программе
0
|
31.07.2023, 18:08 | |
Ответы с готовыми решениями:
8
Длина строки в байтах strlen
|
Вездепух
![]() ![]() ![]() 12860 / 6725 / 1808
Регистрация: 18.10.2014
Сообщений: 17,026
|
|
31.07.2023, 18:24 | 2 |
![]() Решение
Это язык С?
sizeof не имеет никакого отношения к длине строки и ничего не знает ни о каких строках вообще. sizeof в данном примере возвращает размер массива. А уж как у вас размер массива коррелирует с длиной строки - это дело десятое. Да, у вас в вашем примере размер массива получается на 1 больше длины строки из-за терминального нуля.И какой strlen ? Для использования strlen нужно #include <cstring> . Я не вижу #include <cstring> у вас в коде.
1
|
9 / 9 / 1
Регистрация: 09.07.2009
Сообщений: 636
|
|
31.07.2023, 18:32 [ТС] | 3 |
Спасибо за ответ. Я теперь понял, что sizeof работает со строкой как с массивом и видимо считает конец строки как элемент массива. Переделывал из проекта C++, забыл убрать. Нужного заголовочного файла у меня действительно нет, но программа работает и strlen считает. Почему считает - не знаю (проверил еще раз только что - работает)
0
|
Вездепух
![]() ![]() ![]() 12860 / 6725 / 1808
Регистрация: 18.10.2014
Сообщений: 17,026
|
|
31.07.2023, 20:08 | 4 |
Ну, еще раз:
sizeof не знает, что такое "строка". sizeof не может "считать" конец строки ничем, ибо sizeof ничего не знает ни о каких "концах строк". sizeof возвращает размер объекта в байтах. После объявления char a[100] = "abc"; sizeof a вернет 100, несмотря на то, что длина строки равна 3. Не 3, не 4, а 100.
0
|
9 / 9 / 1
Регистрация: 09.07.2009
Сообщений: 636
|
|
01.08.2023, 09:50 [ТС] | 5 |
Теперь понятно.
0
|
![]() 4040 / 2585 / 431
Регистрация: 09.09.2017
Сообщений: 11,546
|
||||||
01.08.2023, 11:01 | 6 | |||||
А в более общем случае sizeof возвращает размер типа данных. Ему без разницы что строка, что массив, что структура, символ, число иди все это вместе. Это легко проверить:
0
|
1 / 1 / 0
Регистрация: 01.08.2023
Сообщений: 23
|
|
02.08.2023, 15:22 | 7 |
Это для C++, а у него C, испорченный MSVC, или C++, испорченный незнанием STL.
Добавлено через 1 минуту sizeof(x) работает во время компиляции, и не знает ничего о массивах с переменным кол-вом элементов. Нельзя забывать о том, что массив - всего лишь указатель на его первый элемент, и, соответственно, sizeof развернется в размер указателя на вашей платформе.
0
|
Вездепух
![]() ![]() ![]() 12860 / 6725 / 1808
Регистрация: 18.10.2014
Сообщений: 17,026
|
|
02.08.2023, 17:52 | 8 |
Это для C++. В языке С
sizeof запросто может работать не во время компиляции. Именно потому, что он знает о массивах с переменным кол-вом элементов.Ни в коем случае. Массив - это массив, а никакой не "указатель на первый элемент". И нельзя забывать о том, что sizeof как раз является общеизвестным хрестоматийным примером одного из трех контекстов, в котором не возникает автоматического преобразования массива к указателю.
0
|
1 / 1 / 0
Регистрация: 01.08.2023
Сообщений: 23
|
||||||
02.08.2023, 19:08 | 9 | |||||
Да, вы правы:
7 EXAMPLE 3 In this example, the size of a variable length array is computed and returned from a function:
Добавлено через 5 минут Про массивы извиняюсь, это на меня написание кастомных аллокаторов так подействовало ![]() Добавлено через 14 минут Ну... Так это и есть C++... Добавлено через 5 минут Кстати, замени эту строку на std::cin.get(), и больше нигде и никогда не используй, ведь она работает только на винде
0
|
02.08.2023, 19:08 | ||||||
Помогаю со студенческими работами здесь
9
Даны две переменные, в первой строка, во второй длина строки, 100 - max длина, строки. Что такое dup('$') ? Строка: Изменить строку так, чтобы длина строки стала равна заданной длине, большей чем текущая длина строки появилась загвоздка с функцией. нужно вывести на экран строку, сост. из звездочек. Длина строки-параметр функциииз звезд. длина строки - Удалить среднюю букву, если длина строки нечетная, и две средних, если длина строки четная
Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
![]() |
Новые блоги и статьи
![]() |
||||
Осваиваем Kubernetes: Подробная шпаргалка
Mr. Docker 15.03.2025
Kubernetes — это открытая платформа для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями. Он был создан для решения проблем, с которыми сталкиваются. . .
|
Лучшие PHP REST API фреймворки
Jason-Webb 15.03.2025
Современные PHP REST API фреймворки предлагают большой набор функциональности: от автоматической валидации данных и управления маршрутизацией до генерации документации и интеграции с различными. . .
|
Многопоточность в Java с Project Loom: виртуальные или обычные потоки
Javaican 15.03.2025
Многопоточность всегда была одноим из основных элементов в разработке современного программного обеспечения. Она позволяет приложениям обрабатывать несколько задач одновременно, что критично для. . .
|
Что нового в Swift 6 и особенности миграции
mobDevWorks 15.03.2025
Swift 6 — это новый крупный релиз языка программирования от Apple, анонсированный на WWDC 2024. Если вы следили за эволюцией Swift, то наверняка заметили, что многие значимые возможности, которые. . .
|
Вопросы на собеседовании по Android
mobDevWorks 14.03.2025
По данным статистики, Android занимает более 70% мирового рынка мобильных операционных систем, что делает платформу привлекательной как для начинающих разработчиков, так и для опытных профессионалов. . . .
|
Лучшие игровые движки для Python
py-thonny 14.03.2025
Python обеспечивает разработчиков игр мощными движками и фреймворками, которые позволяют воплотить практически любую идею — от простой аркады до визуального романа с разветвленным сюжетом. Главное. . .
|
Бессерверный JavaScript: Разработка масштабируемых API с AWS Lambda
run.dev 14.03.2025
Но что такое бессерверные вычисления на самом деле? По сути, это модель облачных вычислений, где разработчик фокусируется исключительно на создании бизнес-логики, не тратя время на настройку. . .
|
Безопасность кода в C++26: Менеджеры ресурсов и висячие ссылки
NullReferenced 14.03.2025
C++ всегда был языком, предоставляющим разработчикам большие возможности и гибкость, но вместе с тем требующим ответственности. Одной из самых коварных проблем даже для опытных программистов остаются. . .
|
smart-agent proper interface settings (2025)
jigi33 14.03.2025
Smart-agent proper interface settings (mart 2025).
(see screenshots to look at "Etalon" ARM)
|
Продвинутые настройки JVM
Javaican 14.03.2025
Стандартные параметры запуска JVM хороши для повседневной разработки, но совершенно недостаточны для высоконагруженных систем. Представьте, что вы запускаете финансовую платформу, обрабатывающую. . .
|