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

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

Войти
Регистрация
Восстановить пароль
 
Hotbed
48 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 56
#1

Возникнут ли последствия с динамическим массивом? - C++

10.05.2011, 02:48. Просмотров 362. Ответов 6
Метки нет (Все метки)

Если в программе не задается размер массива (строка) и пользователю не подается запрос на размерность можно ли его задать (не имея последствий) таким способом при вводе.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# include <iostream>
#include <cstdio> 
using namespace std;
 
int main()
 
 
{  char mas[]={};
 
    gets(mas);
 
    for (int a =0; mas[a]!='\0';a++)
          cout << *(mas+a)<< endl;
 
   
    cin.get();
    cin.get(); 
    
    }
 
 
//и второй вариант на эту тему размерность через strlen
 
 
 
///////////
  char mas[]={};
 
    gets(mas);
 
int len = strlen(mas);
 
for(int a = 0; a < len; a++)
  cout << mas[a] << endl; 
////////////////
В таких операторах как new и malloc как я понял нужно все равно задавать размер массива как пример:
char *str = new char[100]; все равно задается массив 100 символами, а можно ли без определения его размера задать его размер после ввода с клавиатуры какой нибудь строки?

В моем коде я так подозреваю задается массив с нулевой размерностью и нулевым значениями и при заполнении он выходит за границы. Если не прав поправьте пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2011, 02:48     Возникнут ли последствия с динамическим массивом?
Посмотрите здесь:

Работа с динамическим массивом - C++
Помогите, пожалуйста. В чем проблема? Компилирует, но выполнять не хочет. Надо вставить элемент в конец динамического массива, удалить...

Работа с динамическим массивом - C++
Дано: динамический двумерный массив. Определить сумму всех элементов (с помощью функции, массив и его размерность передать в качестве...

Странность с динамическим массивом - C++
Меня в тупик поставило следующая ошибка (&quot;Название исполняемого файла&quot; has triggered a breakpoint.) В данном простеньком коде. Кто...

Ошибка структуры с динамическим массивом - C++
Описал структуру, содержащую динамический массив. По сути получился динамический массив динамических массивов: main() { int...

Класс с содержащимся динамическим массивом - C++
Возникла необходимость создать свой объект, с внутренним массивом данных, к которому возможно применять Add, Delete, Clear, Count ну и так...

Дополнить класс динамическим массивом - C++
Доброго всем времи суток!!! Возникла проблема - создан класс &quot;sequence&quot; нужно дописать его так, чтобы он использовал динамический...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
10.05.2011, 02:56     Возникнут ли последствия с динамическим массивом? #2
функцию gets() нельзя использовать. вместо неё fgets()
нельзя записывать чтото в пустой массив, это может привести к ошибке

Добавлено через 2 минуты
з.ы. оба варианта одинаково неправильные.
Hotbed
48 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 56
10.05.2011, 02:58  [ТС]     Возникнут ли последствия с динамическим массивом? #3
Цитата Сообщение от nxnx Посмотреть сообщение
нельзя записывать чтото в пустой массив, это может привести к ошибке
Значит только с резервированием памяти
а чем gets от fgets отличается? Ведь в принципе код с ним робит
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
10.05.2011, 03:06     Возникнут ли последствия с динамическим массивом? #4
Цитата Сообщение от Hotbed Посмотреть сообщение
Значит только с резервированием памяти
а чем gets от fgets отличается? Ведь в принципе код с ним робит
gets потенциально опасная функция, в которой нету возможности проверить размер входного буфера,
компилятор gcc выдаст варнинг если её использовать
Hotbed
48 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 56
10.05.2011, 03:10  [ТС]     Возникнут ли последствия с динамическим массивом? #5
Нашел тут кое че
Функция
fgets аналогична библиотечной функции gets, однако, gets заменяет
символ новой строки нулевым символом. В принципе то что нужно для обработки символов
На dev c++ 4.9.9.2 робит
dampir_sanek
150 / 148 / 21
Регистрация: 09.02.2010
Сообщений: 407
10.05.2011, 03:26     Возникнут ли последствия с динамическим массивом? #6
nxnx дело говорит.
C++
1
2
3
4
5
FILE * pFile;
char mystring [100];
 
 fgets (mystring , 100 , pFile); // считали строку безопасной функцией 
 mystring[strlen(mystring) - 1] = '\0'; // выкинули символ перехода на новую строку - профит
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2011, 03:32     Возникнут ли последствия с динамическим массивом?
Еще ссылки по теме:

Не могу разобраться с динамическим массивом - C++
Объявляю массив так: int **mas; mas = new int*; for (int i = 0; i&lt;A; i++) { mas = new int; } в итоге выходит...

Операции над динамическим массивом - C++
Написать программу, которая будет создавать массив, длина которого задается с клавиатуры, и предлагать 3 операции: добавить данные в...

Ошибка в функции с динамическим массивом - C++
Данный код у меня выдаёт ошибку :Необработанное исключение в &quot;0x01281d09&quot; в &quot;Chernovick.exe&quot;: 0xC0000005: Нарушение прав доступа при чтении...

Сортировки слиянием с динамическим массивом - C++
Добрый вечер! мне нужно отсортировать массив слиянием с динамическим массивом помогите пожалуйста!!! массив #include &quot;stdafx.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
Hotbed
48 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 56
10.05.2011, 03:32  [ТС]     Возникнут ли последствия с динамическим массивом? #7
Чуть по чуть изучаю спасибо ребят за разъяснения
Yandex
Объявления
10.05.2011, 03:32     Возникнут ли последствия с динамическим массивом?
Ответ Создать тему
Опции темы

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