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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
WildSpirit
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 8
12.12.2012, 19:46     Ввод данных/выделение памяти (динамический символьный массив) #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++ Одномерный символьный динамический массив
Выделение памяти под массив C++
Динамический символьный массив C++
Символьный динамический массив (printf/scanf) C++
Ввод данных в динамический массив из файла C++

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

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

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