Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 04.08.2021
Сообщений: 257

Вывод массива строк

16.02.2023, 01:34. Показов 610. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const size_t N = 10;
        const size_t M = 80;
        const char* STOP_STRING = "*";
                char cBuffer[N][M];
                int point = 0;
 
        for (size_t i = 0; i < N; i++) {
            std::cin >> cBuffer[i];
            if ((strcmp(cBuffer[i], STOP_STRING) == 0)) {
                break;
            }
            point++;
                        }
                        
                       for (int i = 0; i < point; i++) {
            std::cout << cBuffer[i] << std::endl;;
        }
Всем привет! Вопрос такой: строка = 80 элементам;
Когда вывожу через цикл строки, то выводится все правильно.
Как компилятор понимает, сколько элементов в строке ему нужно вывести? Там же в непроинициализированной памяти должен хранится мусор.
Мои предположения: компилятор автоматически после ввода строковых литералов добавляет завершающий 0?
Объясните, пожалуйста!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2023, 01:34
Ответы с готовыми решениями:

Вывод строк и столбцов массива
Здравствуйте, не могли бы вы подсказать как вывести одновременно среднее геометрическое строк и среднее арифметическое столбцов? ...

Формирование и вывод на экран одномерного массива, состоящего из полусумм строк двумерного массива
:gsorry:помогите.... Составьте программу формирования и вывода на экран одномерного массива,состоящего из полусумм строк двумерного...

Вывод массива строк
Добрый день. Подскажите, пожалуйста, как избавиться от лишней &quot;строки&quot; при выводе массива строк? Выводит так: А хотелось...

2
Модератор
 Аватар для Curry
5158 / 3488 / 536
Регистрация: 01.06.2013
Сообщений: 7,568
Записей в блоге: 9
16.02.2023, 02:29
Цитата Сообщение от agent070 Посмотреть сообщение
Мои предположения: компилятор автоматически после ввода строковых литералов добавляет завершающий 0?
И после литералов, например, "*", добавляет \0, и после std::cin >> cBuffer[i] в cBuffer[i] добавляется \0.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13182 / 6818 / 1821
Регистрация: 18.10.2014
Сообщений: 17,255
16.02.2023, 04:59
Цитата Сообщение от agent070 Посмотреть сообщение
Вопрос такой: строка = 80 элементам;
Нет. Это размер каждого символьного буфера у вас = 80 элементам. Это никакие не "строки", это просто символьные массивы.

С-строка - это последовательность символов, завершающаяся символом '\0'. Где встретится '\0' - там С-строка и закончилась.

Цитата Сообщение от agent070 Посмотреть сообщение
Как компилятор понимает, сколько элементов в строке ему нужно вывести?
"Компилятор"? "Вывести"? Компилятор тут ни при чем. Компилятор выводом не занимается.

Выводом у вас занимается оператор <<, предоставленный std::cout. Именно реализация этого оператора в стандартной библиотеке и знает, что при выводе С-строк нужно остановиться на символе '\0'.

Цитата Сообщение от agent070 Посмотреть сообщение
Там же в непроинициализированной памяти должен хранится мусор.
Не совсем понятно, о какой "непроинициализированной памяти" идет речь. Вы же сначала читаете строки из std::cin при помощи оператора >>. То есть на вывод потом идет совсем не "непроинициализированная память".

Цитата Сообщение от agent070 Посмотреть сообщение
Мои предположения: компилятор автоматически после ввода строковых литералов добавляет завершающий 0?
Нет такого понятия, как "ввод строковых литералов". Строковые литералы - это элементы исходного текста вашей программы. Их невозможно "вводить".

Вводите вы С-строки при помощи оператора >>, предоставленного std::cin. И да, именно реализация этого оператора добавляет в буфер завершающий '\0' в конце каждой введенной строки.

Опять же, компилятор тут совершенно ни при чем. Завершающий '\0' добавляет реализация оператора >> в стандартной библиотеке.

Единственный строковый литерал в вашей программе - это "*". Вот в его конце действительно содержится '\0', добавленный компилятором. А все остальное к компилятору никакого отношения не имеет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2023, 04:59
Помогаю со студенческими работами здесь

Вывод массива строк
Необходимо вывести массив строк по символьно с помощью указателей. Вот прога, не знаю что не так: #include &lt;math.h&gt; #include...

Рандомный вывод строк из массива
Дан строковый массив в нем 2 значения. Как сделать рандомный вывод этих значений?

Вывод массива строк на экран
Есть массив строк , подскажите пожалуйста как его вывести на экран . Через printf пробовал , так выводит какую-то крякозябру из 2-х...

Вывод строк из массива в структуре
Необходимо исправить небольшой косяк. Дана задачка: Описать структуру с именем NOTE, содержащую следующие поля: -фамилия, имя; ...

Вывод строк из массива на экран
Доброго времени суток! Пишу курсовую, что-то вроде дебагера.. Не получается отобразить на экране названия регистров из массива строк. Если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru