如何为字符串动态分配内存空间并从用户那里获取该字符串?

我想使用C程序读取用户的输入。我不想使用数组,


char names[50];

因为如果用户提供长度为10的字符串,那么剩余的空间将被浪费。


如果我像这样使用字符指针,


char *names;

那么我需要以这种方式分配内存,


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

同样在这种情况下,可能会浪费内存。


因此,我需要为与字符串长度完全相同的字符串动态分配内存。


假设


如果用户输入为"stackoverflow",则分配的内存应该为14(即,字符串的长度= 13和'\ 0'的1个额外空间)。


我怎样才能做到这一点?


繁花不似锦
浏览 777回答 3
3回答

温温酱

您还可以使用正则表达式,例如以下代码:char *namesscanf("%m[^\n]", &names)将从标准输入中获取整行内容,动态分配其占用的空间量。在那之后,当然,您必须自由names。
打开App,查看更多内容
随时随地看视频慕课网APP