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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.60
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
#1

Можно ли задать размер строкового массива переменной - C++

05.10.2009, 14:50. Просмотров 5927. Ответов 6

Можно ли задать размер строкового массива переменной?

Например считаю сколько слов в введенном предложении а затем создаю массив с количеством элементов равным n
C++
1
2
3
4
5
6
7
8
9
10
11
12
char s1[80];
for (int i=0;*(s1+i)!='\0';i++)
    {
        if (*(s1+i)!=' ')continue;
        else
        {
            n++;
        }
    }
    cout<<n<<"\n"; //количество слов в предложении
 
char s3[n]; /пытаюсь создать новый строковый массив. как?
можно ли такое выполнить либо строковый массив задаётся строго числом?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2009, 14:50     Можно ли задать размер строкового массива переменной
Посмотрите здесь:

C++ Задать размер массива
Как в переменной строкового типа заменить все вхождения одного символа на другой? C++
Задать размер двумерного массива C++
C++ Задать размер массива в стороннем файле
C++ Как задать переменный размер массива
C++ Можно ли определить размер динамического двумерного массива, количество строк и столбцов?
C++ Массив: каким образом можно изменить размер многомерного массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
05.10.2009, 14:54     Можно ли задать размер строкового массива переменной #2
C++
1
char *s3 = new char [n];
Evg
Эксперт CАвтор FAQ
17413 / 5651 / 355
Регистрация: 30.03.2009
Сообщений: 15,475
Записей в блоге: 26
05.10.2009, 14:57     Можно ли задать размер строкового массива переменной #3
Цитата Сообщение от delias Посмотреть сообщение
можно ли такое выполнить либо строковый массив задаётся строго числом?
В стандартных реализациях языков Си\Си++ нельзя. Во всяких Си99, GNU-C можно. В виндовых компиляторах вроде бы тоже это поддерживается, но не уверен
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
05.10.2009, 15:04  [ТС]     Можно ли задать размер строкового массива переменной #4
ясно.
в принципе вариант Андрейки устраивает.
спасибо за помощь.
minitup
1 / 1 / 0
Регистрация: 27.09.2009
Сообщений: 8
05.10.2009, 16:29     Можно ли задать размер строкового массива переменной #5
Цитата Сообщение от Evg Посмотреть сообщение
В стандартных реализациях языков Си\Си++ нельзя
Почему? Не поймите неправильно, я только учусь... Но причины невозможности инициализации некоторого массива значением количества слов другого массива мне неочевидны.
Evg
Эксперт CАвтор FAQ
17413 / 5651 / 355
Регистрация: 30.03.2009
Сообщений: 15,475
Записей в блоге: 26
05.10.2009, 16:57     Можно ли задать размер строкового массива переменной #6
Цитата Сообщение от minitup Посмотреть сообщение
Почему? Не поймите неправильно, я только учусь... Но причины невозможности инициализации некоторого массива значением количества слов другого массива мне неочевидны.
Язык Си - по сути разрабатывался как низкоуровневый ассемблер, а потому в нём попросту нет каких-то конструкций, которые выражают какие-то макродействия. Когда ты пишешь массив неизвестного размера, то это означает, что под него нужно динамически выделить память, что противоречило изначальной концепции языка Си. Ну а в современное время язык стал одним из основных (включая Си++, С#), а потому в более поздних стандартах начали появляться и эти конструкции. Однако не все компиляторы перешли на эти стандарты
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2009, 11:48     Можно ли задать размер строкового массива переменной
Еще ссылки по теме:

C++ Задать размер динамического массива через переменную, обявленную как extern
Как задать размер массива равным значению входного аргумента C++
Не получается задать произвольный размер массива в struct C++
Массив. Можно ли задать длину массива переменной C++
Как задать размер массива, который является членом класса, через конструктор? C++

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

Или воспользуйтесь поиском по форуму:
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
06.10.2009, 11:48  [ТС]     Можно ли задать размер строкового массива переменной #7
чтоб не засорять форум новой темой спрошу тут.
вот код:
C
1
2
3
4
5
6
7
8
9
10
char s1[80];
    int len=0,n=1;
    cin.getline(s1,sizeof(string));
    
    for (int i=0;*(s1+i)!='\0';i++,len++)
    {
        cout<<i<<"\t"<<*(s1+i)<<"\t"<<len<<"\n";
    }
    
    cout<<len<<"\n"; //количество букв в предложении
не могу понять, почему если ввожу предложение больше чем из 30 символов, то подсчитывает количество символов в массиве только до 30, дальше почему-то из цикла выходит, а ведь ввожу предложение более чем на 30 букв. неужто конец строки вставляется в каждый 30й элемент массива? не пойму почему так.

Добавлено через 24 минуты
ошибку нашёл, она кроется в sizeof(string)
вопрос снимаю
Yandex
Объявления
06.10.2009, 11:48     Можно ли задать размер строкового массива переменной
Ответ Создать тему
Опции темы

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