12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
||||||
1 | ||||||
Динамическое выделение памяти под строку27.08.2012, 16:32. Показов 28005. Ответов 13
Метки нет (Все метки)
Требуется написать функцию, которая считывает строку, предварительно выдели под неё память и в случае нехватки, первоначально выделенной памяти, перевыделить память.
Написал вот так, но почему-то выскакивает ошибка:
0
|
27.08.2012, 16:32 | |
Ответы с готовыми решениями:
13
Динамическое выделение памяти под вводимую строку Динамическое выделение памяти под массив Динамическое выделение памяти под файл Динамическое выделение памяти под массив |
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
27.08.2012, 16:34 [ТС] | 2 |
В функции должна появиться строка "error" на экране, после чего программа должна завершиться. НО вместо этого получается какая-то ошибка. Вот фото:
0
|
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
|
||||||
27.08.2012, 16:57 | 3 | |||||
Более надежный пример с точки зрения выделения памяти:
2
|
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
27.08.2012, 17:38 [ТС] | 4 |
А что у меня за ошибка получается? С чем это связано?
0
|
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
|
|
27.08.2012, 17:40 | 5 |
С выделением астрономического количества байтов при выполнении realloc'а.
0
|
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
27.08.2012, 17:43 [ТС] | 6 |
Чем этот способ надёжнее?
0
|
Модератор
12736 / 7566 / 1764
Регистрация: 25.07.2009
Сообщений: 13,954
|
|
27.08.2012, 17:43 | 7 |
2
|
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
27.08.2012, 17:44 [ТС] | 8 |
В результате такого количество выделения байтов, я хотел получить нулевой указатель, вывеси ошибку и завершить программу. Но вместо этого получил ошибку.
0
|
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
|
|
27.08.2012, 17:45 | 9 |
Динамическое выделение память происходит при каждой итерации цикла по 32 байта см. переменную size
0
|
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
27.08.2012, 17:47 [ТС] | 10 |
ЗАРАБОТАЛО! Вы могли бы объяснить почему объявление переменной как char вызывало ошибку?
0
|
Модератор
12736 / 7566 / 1764
Регистрация: 25.07.2009
Сообщений: 13,954
|
|
27.08.2012, 18:00 | 11 |
bgm313, функция getchar объявлена возвращающей значение типа int. Мало того, при возникновении ошибки или по окончании ввода возвращает значение EOF тоже типа int. При присвоении его переменной типа char происходит отбрасывание старших разрядов, на что по сути он и ругается. Где-то в мелкостудии эти проверки отключаются, но это при условии, что точно понимаешь, что делаешь. А так пусть лучше ругается...
1
|
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
27.08.2012, 18:11 [ТС] | 12 |
Вообще странно, что возникают ошибки. Это же не какой-нибудь C#.
0
|
0 / 0 / 0
Регистрация: 29.01.2017
Сообщений: 1
|
||||||
30.01.2017, 01:36 | 14 | |||||
Доделал вариант zitxbit в виде метода структурного типа.
Вместо: Поставить: // вместо enter записываем \0 myStr.string[myStr.sizec-1] = '\0'; Иначе она enter тоже посчитает.
0
|
30.01.2017, 01:36 | |
30.01.2017, 01:36 | |
Помогаю со студенческими работами здесь
14
Динамическое выделение памяти под структуры Динамическое выделение памяти под структуру Динамическое выделение памяти под массива стуктур Динамическое выделение памяти под массив структур Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |