Форум программистов, компьютерный форум CyberForum.ru

напечатать массив строк - C++

Восстановить пароль Регистрация
 
nikolainikolai
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 29
10.05.2014, 16:43     напечатать массив строк #1
ошибка Segmentation fault

Пишу
C++
1
2
3
4
5
6
7
8
9
10
11
const char *mas[] = { "asdfsg",
                      "1231252",
                      "kjl,hjl,",
                      "0898-0",
                      "uyiiyu",
                      "----------" };
 
for ( int a = 0; '\0' !=  mas[a]; a++ )
{
    cout << mas[a]  << endl;
};
На выходе получаю:
asdfsg
1231252
kjl,hjl,
0898-0
uyiiyu
----------
Segmentation fault

если я правильно понимаю, указатель выходит за границу массива. Как это можно исправить?

Добавлено через 1 минуту
если я точно указываю кол-во строк, программа работает исправно, но как обойтись без подсчёта строк?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2014, 16:43     напечатать массив строк
Посмотрите здесь:

C++ Массив: Напечатать номер каждой строки, в которой второй элемент меньше среднего арифметического элементов этой строки, и число таких строк.
C++ Ввод нескольких строк или массив строк
C++ Динамический массив строк (считать с файла строки и поместить их в динамический массив строк)
Сформировать массив строк. Удалить из него одинаковые строки. Сформировать массив строк. Удалить из него К последних строк C++
Используя функцию копирования строк, организуйте конкатенацію и копирование строк в четвертый массив, содержащий полные имена C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
10.05.2014, 16:44     напечатать массив строк #2
а ничего, что mas[a] - это char* получается?
nikolainikolai
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 29
10.05.2014, 17:20  [ТС]     напечатать массив строк #3
наверно... и как быть?

Добавлено через 32 минуты
не понимаю как его привести к правильному значению...
TheChosenOne
13 / 13 / 1
Регистрация: 13.09.2013
Сообщений: 113
10.05.2014, 17:56     напечатать массив строк #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Дело в том что каждый из твоих элементов массива это char*. В итоге у тебя твоя переменная mass - это указатель на массив указателей. Ты не можешь сравнивать массивы символов в стиле С (это тип char) обычными операциями сравнения ( такие как <, >,!=,==,и.т.д),разве что перегрузив их. Твое '\0' != mas[a] прокатит в одномерном массиве,где строка заканчивается нулем. Т.е. mas[] = {'h','e','l','o','\0'}; Т.к. ты можешь сравнивать символы,но не массивы символов.
nikolainikolai
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 29
11.05.2014, 11:54  [ТС]     напечатать массив строк #5
Ок, спасибо за ответ
решил задачу следующим хаком
C++
1
2
3
4
5
                      ...
                      "0898-0",
                      "uyiiyu",
                      "----------",
                      '\0' };
Добавлено через 42 секунды
*Прокатило
Yandex
Объявления
11.05.2014, 11:54     напечатать массив строк
Ответ Создать тему
Опции темы

Текущее время: 02:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru