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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
WildSpirit
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 8
#1

Ввод данных/выделение памяти (динамический символьный массив) - C++

12.12.2012, 19:46. Просмотров 1275. Ответов 1
Метки нет (Все метки)

1. Если ли разница в таких двух вариантах объявления динамического символьного массива:
а)
C++
1
char *string = (char*) malloc(N);
б)
C++
1
char *string = new char [N];
?
2. Почему-то не работает перераспределение памяти. Пишу так:
C++
1
string = (char*) realloc(string,(len-5));
Переменная len - длинна введенной строки (считается правильно, проверял). Здесь, например, я пытаюсь уменьшить на 5 байт блок, выделенный под char переменную string. Затем вывожу ее - выводится то же количество символов, что и было введено, а значит что-то не работает
3. Вот у меня вот так происходит создание и ввод данных в массив:
C++
1
2
3
scanf("%d",&N);
char *string = new char [N];
fgets(string,N-2,stdin);
а) Почему в fgets аргумент должен быть на 2 меньше, чем выделено байт (в учебнике так)? Один символ - это окончание строки \0, а второй?
б) Вот в исходном варианте после ввода количества символов в массиве (т.е. ввода переменной N) программа останавливалась, а в памяти в массиве string было только "\n". Решил проблему, вставив после scanf
C++
1
getchar();
или
C++
1
cin.ignore();
Но почему так происходит?

Заранее спасибо за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 19:46     Ввод данных/выделение памяти (динамический символьный массив)
Посмотрите здесь:

C++ Массив строк, выделение памяти
C++ Ввод данных в динамический массив структур
Осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д. C++
Выделение памяти под массив C++
Символьный динамический массив (printf/scanf) C++
Ввод данных в динамический массив из файла C++
C++ Нужно ли удалять указатель на символьный массив созданный в куче(динамически распределяемой памяти)
C++ Выделение памяти под динамический двумерный массив в структуре
C++ Ввод данных в динамический массив из файла
Динамический ввод и вывод данных в двумерный массив C++
C++ Ввод данных в двумерный динамический массив
Sizeof и Динамический символьный массив! C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
WildSpirit
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 8
15.12.2012, 19:23  [ТС]     Ввод данных/выделение памяти (динамический символьный массив) #2
Вопросы еще актуальны
Yandex
Объявления
15.12.2012, 19:23     Ввод данных/выделение памяти (динамический символьный массив)
Ответ Создать тему
Опции темы

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