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

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

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

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

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

C++ Напечатать “Yes”, если массив симметричен, и “No” в противном случае
C++ Напечатать двухмерный массив через функцию
C++ Напечатать номера строк и столбца прямоугольной матрицы, на пересечении которых стоит максимальный элемент
C++ Напечатать номера строк и столбца прямоугольной матрицы, на пересечении которых стоит минимальный элемент.
Обработка текстовых строк. Напечатать все слова, содержащие хотя бы одну цифру C++
C++ Добавление неодинаковых строк в массив строк
Задан текстовый файл. Напечатать первую из самых коротких его строк C++
Массив: Напечатать номера рядов с отрицательными элементами. C++
Внесение строк в массив строк (не сложно) C++
Напечатать те латинские буквы, которые входят только в одну из трех заданных строк C++
C++ ля заданных трех строк напечатать те латинские буквы, которые входяттолько в одну из них
C++ задан массив слов. напечатать самое короткое слово

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12537 / 7099 / 797
Регистрация: 27.09.2012
Сообщений: 17,521
Записей в блоге: 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     напечатать массив строк
Ответ Создать тему
Опции темы

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