Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

12.12.2012, 19:46. Просмотров 1389. Ответов 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();
Но почему так происходит?

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

Выделение памяти под динамический двумерный массив в структуре - C++
Доброво времени суток, дорогие товарищи-кодеры! Работав проектом, столкнулся с тем что удобно было бы запилить двумерный динамик в...

Ввод данных в динамический массив структур - C++
Помогите правильно написать функцию - сколь не пробовал, не получается - getinfo(), которая требует ввода данных о студентах. Она...

Ввод данных в динамический массив из файла - C++
написал программу, вроде все по правилам,только почему-то каждый раз переходит по стрелке "файл не открыт" #include <iostream> ...

Ввод данных в двумерный динамический массив - C++
Добрый вечер! Осваиваю уже третий день двумерные массивы в С++, но каким образом они создаются до сих пор не понятно. У меня было...

Ввод данных в динамический массив из файла - C++
В задаче написано: введение данных в динамический массив делать из файла. Как это?

Динамический ввод и вывод данных в двумерный массив - C++
Не могу реализовать ввод и вывод данных двумерного массива используя указатель на указатель, в чём проблема? cin >> *(*(p+n*i)+j); ...

1
WildSpirit
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 8
15.12.2012, 19:23  [ТС] #2
Вопросы еще актуальны
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2012, 19:23
Привет! Вот еще темы с ответами:

Sizeof и Динамический символьный массив! - C++
В первом примере sizeof показывает кол-во элементов в массиве! #include<iostream> #include<cmath> using namespace std; void main() ...

Символьный динамический массив (printf/scanf) - C++
Почему не работает? Проблема возникает, когда нужно вывести массив на экран. Возможно он неправильно считывается? Объясните, пожалуйста, в...

Осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д. - C++
1) Как осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д.? 2) И еще вопрос есть такой....

Нужно ли удалять указатель на символьный массив созданный в куче(динамически распределяемой памяти) - C++
Подскажите, программа состоит из 2 функций (main и fun), программа меняет значение указателя на символьный массив созданный в динамически...


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

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

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