5 / 5 / 0
Регистрация: 16.07.2009
Сообщений: 87
1

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

05.10.2009, 14:50. Показов 22156. Ответов 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]; /пытаюсь создать новый строковый массив. как?
можно ли такое выполнить либо строковый массив задаётся строго числом?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2009, 14:50
Ответы с готовыми решениями:

Задать размер массива другой переменной
Есть такой код: #include &lt;vector&gt; using namespace std; int main() { vector&lt;float&gt; vec; ...

Массив. Можно ли задать длину массива переменной
Хочу сделать, чтобы можно было указать длину массива непосредственно во время использования...

Можно ли задать фиксированный размер RowHeaders в datagridview?
Добрый день! Хочу задать фиксированный размер RowHeaders и запретить изменения. Подскажите, как...

Можно ли задать размер ObservebleCollections , как обычному массиву ?
Можно ли задать размер ObservebleCollections , как обычному массиву ?

6
424 / 228 / 87
Регистрация: 25.03.2009
Сообщений: 744
05.10.2009, 14:54 2
C++
1
char *s3 = new char [n];
1
Evg
Эксперт CАвтор FAQ
21248 / 8263 / 637
Регистрация: 30.03.2009
Сообщений: 22,607
Записей в блоге: 30
05.10.2009, 14:57 3
Цитата Сообщение от delias Посмотреть сообщение
можно ли такое выполнить либо строковый массив задаётся строго числом?
В стандартных реализациях языков Си\Си++ нельзя. Во всяких Си99, GNU-C можно. В виндовых компиляторах вроде бы тоже это поддерживается, но не уверен
0
5 / 5 / 0
Регистрация: 16.07.2009
Сообщений: 87
05.10.2009, 15:04  [ТС] 4
ясно.
в принципе вариант Андрейки устраивает.
спасибо за помощь.
0
1 / 1 / 0
Регистрация: 27.09.2009
Сообщений: 8
05.10.2009, 16:29 5
Цитата Сообщение от Evg Посмотреть сообщение
В стандартных реализациях языков Си\Си++ нельзя
Почему? Не поймите неправильно, я только учусь... Но причины невозможности инициализации некоторого массива значением количества слов другого массива мне неочевидны.
0
Evg
Эксперт CАвтор FAQ
21248 / 8263 / 637
Регистрация: 30.03.2009
Сообщений: 22,607
Записей в блоге: 30
05.10.2009, 16:57 6
Цитата Сообщение от minitup Посмотреть сообщение
Почему? Не поймите неправильно, я только учусь... Но причины невозможности инициализации некоторого массива значением количества слов другого массива мне неочевидны.
Язык Си - по сути разрабатывался как низкоуровневый ассемблер, а потому в нём попросту нет каких-то конструкций, которые выражают какие-то макродействия. Когда ты пишешь массив неизвестного размера, то это означает, что под него нужно динамически выделить память, что противоречило изначальной концепции языка Си. Ну а в современное время язык стал одним из основных (включая Си++, С#), а потому в более поздних стандартах начали появляться и эти конструкции. Однако не все компиляторы перешли на эти стандарты
0
5 / 5 / 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)
вопрос снимаю
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.10.2009, 11:48
Помогаю со студенческими работами здесь

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

Какой максимальный размер матриц можно задать для перемножения?
Привет кодеры! Тут вопрос такой. Решил я перемножить матрицы и заинтересовался какой максимальный...

Можно ли задать размер картинки для закрытия модального окна?
Для закрытия модального окна используется вот такой типовой код: a.modalCloseImg { ...

Как можно задать размер браузера через http заголовки?
Ктонить знает как можно задать размер браузера через http заголовки? не исползуя window.open();


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru