【发布时间】:2011-12-31 03:06:48
【问题描述】:
我想使用 C 程序读取用户的输入。我不想像这样使用数组,
char names[50];
因为如果用户给出长度为 10 的字符串,那么剩余的空间就被浪费了。
如果我使用字符指针,
char *names;
那么我需要为此分配内存,
names = (char *)malloc(20 * sizeof(char));
在这种情况下,也存在内存浪费的可能性。
所以,我需要的是为一个与字符串长度完全相同的字符串动态分配内存。
假设,
如果用户输入是"stackoverflow",那么分配的内存应该是14(即字符串的长度= 13和1个额外的空间'\0')。
我怎样才能做到这一点?
【问题讨论】:
-
一些编译器提出了这些解决方案 char a[ ] 而不是称为动态数组!
标签: c string memory-management malloc dynamic