Как отвести неопределенный размер в памяти - C (СИ)
Формулировка задачи:
Я объвляю переменную, указатель на пустую строку:
В теле программы определяю ее например
Вот так оно работает.
Могу ли я не задавая явно размер строки после компиляции, например
при помощи scanf присвоить не пустую строку этой переменной?
Я так понимаю в стеке с локальными переменными не получится,
а если например вынести за пределы главной функции,
что то на подобии секции .bss в асме в сегменте позволяющем
динамически выделять память?
char *str = {""};
str = "table";
Решение задачи: «Как отвести неопределенный размер в памяти»
textual
Листинг программы
char* p; scanf("%254[^\n]", p = malloc(255));
Объяснение кода листинга программы
В данном коде происходит следующее:
- Объявляется указатель
p
на типchar
. - Используется функция
scanf
для чтения строки, ограниченной 254 символами (поскольку%254
указывает на максимальное количество символов, которые могут быть считаны). - В качестве второго аргумента функции
scanf
используется указательp
, который указывает на выделенную память с помощью функцииmalloc
(255 символов, поскольку в C строки представлены какchar arrays
и требуют дополнительного символа нулевого терминатора). Таким образом, в результате выполнения данного кода в переменнуюp
будет сохранена строка, которая была введена пользователем.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д