Как динамически выделить пространство памяти для строки и получить эту строку от пользователя? - PullRequest
41 голосов
/ 17 ноября 2011

Я хочу прочитать ввод от пользователя, используя программу C. Я не хочу использовать массив, как,

char names[50];

потому что если пользователь дает строку длиной 10, то оставшиеся пробелы теряются.

Если я использую указатель символов, как,

char *names;

тогда мне нужно выделить память для этого таким образом,

names = (char *)malloc(20 * sizeof(char));

В этом случае также возможна потеря памяти.

Итак, мне нужно динамически выделить память для строки, которая точно равна длине строки.

Предположим,

Если пользовательский ввод "stackoverflow", то выделенная память должна быть 14 (т.е. длина строки = 13 и 1 дополнительный пробел для '\ 0').

Как мне этого добиться?

Ответы [ 11 ]

0 голосов
/ 19 мая 2017

Это более простой подход

char *in_str;
in_str=(char *)malloc(512000 * sizeof(char));
scanf("\n%[^\n]",in_str);
...