9 / 9 / 1
Регистрация: 09.07.2009
Сообщений: 648
|
||||||
1 | ||||||
Длина строки (sizeof и strlen)31.07.2023, 18:08. Показов 1757. Ответов 8
Метки нет Все метки)
(
В программе
0
|
31.07.2023, 18:08 | |
Ответы с готовыми решениями:
8
Длина строки в байтах strlen
|
Вездепух
![]() ![]() ![]() 12866 / 6731 / 1809
Регистрация: 18.10.2014
Сообщений: 17,036
|
|
31.07.2023, 18:24 | 2 |
![]() Решение
Это язык С?
sizeof не имеет никакого отношения к длине строки и ничего не знает ни о каких строках вообще. sizeof в данном примере возвращает размер массива. А уж как у вас размер массива коррелирует с длиной строки - это дело десятое. Да, у вас в вашем примере размер массива получается на 1 больше длины строки из-за терминального нуля.И какой strlen ? Для использования strlen нужно #include <cstring> . Я не вижу #include <cstring> у вас в коде.
1
|
9 / 9 / 1
Регистрация: 09.07.2009
Сообщений: 648
|
|
31.07.2023, 18:32 [ТС] | 3 |
Спасибо за ответ. Я теперь понял, что sizeof работает со строкой как с массивом и видимо считает конец строки как элемент массива. Переделывал из проекта C++, забыл убрать. Нужного заголовочного файла у меня действительно нет, но программа работает и strlen считает. Почему считает - не знаю (проверил еще раз только что - работает)
0
|
Вездепух
![]() ![]() ![]() 12866 / 6731 / 1809
Регистрация: 18.10.2014
Сообщений: 17,036
|
|
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
Сообщений: 648
|
|
01.08.2023, 09:50 [ТС] | 5 |
Теперь понятно.
0
|
![]() 4045 / 2596 / 431
Регистрация: 09.09.2017
Сообщений: 11,559
|
||||||
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
|
Вездепух
![]() ![]() ![]() 12866 / 6731 / 1809
Регистрация: 18.10.2014
Сообщений: 17,036
|
|
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('$') ? Строка: Изменить строку так, чтобы длина строки стала равна заданной длине, большей чем текущая длина строки появилась загвоздка с функцией. нужно вывести на экран строку, сост. из звездочек. Длина строки-параметр функциииз звезд. длина строки - Удалить среднюю букву, если длина строки нечетная, и две средних, если длина строки четная
Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Словари в Python: методы работы, оптимизация, сериализация
py-thonny 19.03.2025
Каждый хотя бы раз сталкивался с необходимостью хранить связанные данные, где важна не только сама информация, но и их взаимосвязь. В дебрях Python словари — это тот универсальный инструмент, который. . .
|
Реализация паттерна CQRS с Event Sourcing в PHP
Jason-Webb 19.03.2025
CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который разделяет операции чтения и записи данных в приложении. Если вы столкнулись с ситуацией, когда ваше PHP-приложение. . .
|
std::span в C++: Подпредставления и срезы
NullReferenced 18.03.2025
Если вы когда-нибудь работали с большими объемами данных в C++, то наверняка сталкивались с необходимостью манипулировать отдельными частями массивов или контейнеров. Традиционные подходы часто. . .
|
std::span в C++: Доступ к элементам и итерирование
NullReferenced 18.03.2025
В C++ каждый разработчик сталкивается с проблемой эффективного управления последовательностями данных. Представьте: вы работаете с массивом, передаете его в функцию, а затем в другую, и каждый раз. . .
|
Утечки памяти в C#
UnmanagedCoder 18.03.2025
Когда мы говорим о разработке приложений на C#, то часто успокаиваем себя мыслью, что сборщик мусора решит все наши проблемы с памятью. "Память управляется автоматически" — эта мантра прочно засела в. . .
|
std::span в C++: Введение в невладеющее представление
NullReferenced 18.03.2025
С появлением стандарта C++20 у нас появился новый инструмент — std::span, который представляет собой невладеющее представление для работы с последовательностями данных.
std::span — это легковесный. . .
|
Введение в Dapr для разработчиков .NET
UnmanagedCoder 18.03.2025
Разработка распределенных систем никогда не была настолько востребованной и одновременно такой сложной. Если вы . NET разработчик, то наверняка сталкивались с необходимостью жонглировать обнаружением. . .
|
Собеседование по Spring Boot: продвинутые вопросы и ответы
Javaican 18.03.2025
Собеседования на позиции старших разработчиков и архитекторов требуют глубокого понимания внутренних механизмов Spring Boot, нюансов конфигурирования, подходов к оптимизации и построению сложных. . .
|
Перечисления в TypeScript: использование и лучшие практики
run.dev 18.03.2025
Пишете код и устали от разбросанных по проекту "волшебных" строк и чисел? Знакомая ситуация: где-то в глубине кода притаилась строка "ADMIN", а в другом месте используется "admin". И вот уже. . .
|
Фишки Kotlin, которые все любят
Javaican 18.03.2025
Помню, как скептически относился к появлению "ещё одного языка для JVM" — мол, зачем нам что-то новое, когда есть Java? Но первый же проект на Kotlin заставил меня пересмотреть свое мнение. Код стал. . .
|