1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 41
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Динамическое выделение памяти под строки в стиле Си01.01.2016, 15:33. Показов 10213. Ответов 15
Метки нет (Все метки)
В программе пользователь вводит строку неизвестного заранее размера. Ее нужно передать в функцию для работы с ней. Как это оформить на c++?
Функция должна быть вида
При таком
0
|
01.01.2016, 15:33 | |
Ответы с готовыми решениями:
15
Динамическое выделение памяти под строки Динамическое выделение памяти под объект Динамическое выделение памяти под массив Динамическое выделение памяти под массив |
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
01.01.2016, 15:47 | 2 |
Если на C++, то void func(const std::string&str).
Если через char*, то размер строки определяется положением нулевого (0/'\0') символа. Где он встретился, там и конец, все что после него игнорируется.
1
|
Неэпический
|
|
01.01.2016, 15:48 | 3 |
1
|
1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 41
|
|||||||||||
01.01.2016, 16:33 [ТС] | 4 | ||||||||||
Пробую создать так,
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
01.01.2016, 16:42 | 5 |
&ss - указатель на указатель.
Никак - scanf не умеет читать строки переменной длины, автоматически выделяя под них память и сохраняя указатель на эту память в операнд. Вот cin умеет, но только если читать в std::string.
1
|
1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 41
|
||||||||||||||||
02.01.2016, 10:45 [ТС] | 6 | |||||||||||||||
Подскажите, как сделать, чтобы строка произвольной длины, введенная с клавиатуры в мэйне,
передавалась в функцию с прототипом
cin на тип string; Короче, можно ли как то выполнить условия задачи?
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
02.01.2016, 11:05 | 7 |
Нет, * - часть типа s (char*). Хотя, char* s,m; объявляет две переменные разного типа. Причины теряются в веках и возможно связаны с тем, что авторы Си курили что-то запретное.
Строкового же типа в стиле Си просто не существует. Есть только массив char, на который и указывает s.
1
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
02.01.2016, 16:21 | 8 | |||||
Вы таки с языком программирования определитесь. В С++ для этого есть класс std::string, в С нужно или свой динамически расширяющийся массив писать, или использовать готовые решения вроде String из Glib:
Код
~/cpp/glib $ gcc get_string.c `pkg-config --cflags --libs glib-2.0` ~/cpp/glib $ ./a.out > any : any > many : many > money : money > more : more > ~/cpp/glib $
1
|
1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 41
|
||||||||||||||||
06.01.2016, 11:59 [ТС] | 10 | |||||||||||||||
Да, это с++.
А что вот с этим можно поделать. Ошибка на начале обхода строки при
Скриншот с ошибкой во вложении. Текст программы
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|||||||||||||||||
06.01.2016, 15:01 | 11 | ||||||||||||||||
Добавлено через 30 минут Alex31115, и кстати, если уж у'чите С++, так и учи'те С++! К чему странные велосипеды в С-стиле?
3
|
1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 41
|
|
06.01.2016, 19:09 [ТС] | 12 |
Кликните здесь для просмотра всего текста
У нас интересное преподавание. Лекции идут по C. На практике другой преподаватель и пишем мы на C++.
А почему все-таки в моей проге не читается строка? Просто нам по условию задачи нельзя использовать библиотечные строковые функции...
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
06.01.2016, 22:05 | 13 | |||||
Память под неё не выделена
Значение - какое-то случайное число. куда-то в памяти пытаемся записать символы с консоли. Скорее всего грохнется с ошибкой времени выполнения.
1
|
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
|
|
06.01.2016, 22:18 | 14 |
Напрашивается логичный вывод: забить на лекции и заниматься плюсами самостоятельно.
0
|
nonedark2008
|
06.01.2016, 22:32
#15
|
0
|
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
|
|
06.01.2016, 22:35 | 16 |
nonedark2008, не знаю, я думал что в ВУЗ поступают для того чтобы учиться, а не ныть как в школе. Объем требований к студенту ясно вырисован с первых дней круса. Так что будь добр. Или грузчиком на рынок, если мозгов и терпения не хватает.
0
|
06.01.2016, 22:35 | |
06.01.2016, 22:35 | |
Помогаю со студенческими работами здесь
16
Динамическое выделение памяти под массив Динамическое выделение памяти под файл Динамическое выделение памяти под структуры Динамическое выделение памяти под массив Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |