Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nikolainikolai
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 29
#1

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

10.05.2014, 16:43. Просмотров 232. Ответов 4
Метки нет (Все метки)

ошибка 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 минуту
если я точно указываю кол-во строк, программа работает исправно, но как обойтись без подсчёта строк?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2014, 16:43
Я подобрал для вас темы с готовыми решениями и ответами на вопрос напечатать массив строк (C++):

Массив: Напечатать номер каждой строки, в которой второй элемент меньше среднего арифметического элементов этой строки, и число таких строк. - C++
Дана матрица А(m,n). Напечатать номер каждой строки, в которой второй элемент меньше среднего арифметического элементов этой строки,...

Сформировать массив строк. Удалить из него одинаковые строки. Сформировать массив строк. Удалить из него К последних строк - C++
Сформировать массив строк. Удалить из него одинаковые строки. Сформировать массив строк. Удалить из него К последних строк.

Вводится массив строк текста с неизвестным заранее количеством строк - C++
1)Вводится массив строк текста с неизвестным заранее количеством строк.Ввод текста заканчивается, если введенная строка текста будет равна...

Используя функцию копирования строк, организуйте конкатенацію и копирование строк в четвертый массив, содержащий полные имена - C++
Пожалуйста с этим заданием. Написать программу, которая описывает четыре массива. Три первых массива должны содержать имена, фамилии и...

Ввод нескольких строк или массив строк - C++
У меня есть массив строк. Нужно ввести несколько строк, но не получается. Вот код: int main() { const int n=4; const int...

Запросить название учебного заведения, специальность и номер группы. записав их в массив из 3 строк. Подсчитать длины каждой строк - C++
Запросить у пользователя название учебного заведения, специальность и номер группы. записав их в массив из 3 строк. Подсчитать длины каждой...

4
Croessmah
Ушел
13766 / 8016 / 924
Регистрация: 27.09.2012
Сообщений: 19,734
Записей в блоге: 3
Завершенные тесты: 1
10.05.2014, 16:44 #2
а ничего, что mas[a] - это char* получается?
0
nikolainikolai
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 29
10.05.2014, 17:20  [ТС] #3
наверно... и как быть?

Добавлено через 32 минуты
не понимаю как его привести к правильному значению...
0
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'}; Т.к. ты можешь сравнивать символы,но не массивы символов.
1
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 секунды
*Прокатило
0
11.05.2014, 11:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2014, 11:54
Привет! Вот еще темы с ответами:

Внесение строк в массив строк (не сложно) - C++
Всем привет. Есть одна проблемка в решении задачи. Задачу я решил, но необходимо немного доделать. Прошу помощи! Заранее благодарен) ...

Добавление неодинаковых строк в массив строк - C++
Здравствуйте! Возникла такая проблема, не могу понять как реализовать добавление в массив строк нодинаковых значений. Вот моя проба, знаю,...

Задан текстовый файл. Напечатать первую из самых коротких его строк - C++
Задан текстовый файл.Напечатать первую из самых коротких его строк.Использовать функции,а также меню выбора существующего или вновь...

Напечатать те латинские буквы, которые входят только в одну из трех заданных строк - C++
Для заданных трех строк S1, S2 и S3 напечатать те латинские буквы, которые входят только в одну из этих строк. с++


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru