我想使用C程序读取用户的输入。我不想使用数组,char names[50];因为如果用户提供长度为10的字符串,那么剩余的空间将被浪费。如果我像这样使用字符指针,char *names;那么我需要以这种方式分配内存,names = (char *)malloc(20 * sizeof(char));同样在这种情况下,可能会浪费内存。因此,我需要为与字符串长度完全相同的字符串动态分配内存。假设如果用户输入为"stackoverflow",则分配的内存应该为14(即,字符串的长度= 13和'\ 0'的1个额外空间)。我怎样才能做到这一点?
3 回答
温温酱
TA贡献1752条经验 获得超4个赞
您还可以使用正则表达式,例如以下代码:
char *names
scanf("%m[^\n]", &names)
将从标准输入中获取整行内容,动态分配其占用的空间量。在那之后,当然,您必须自由names。
- 3 回答
- 0 关注
- 774 浏览
添加回答
举报
0/150
提交
取消