为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
繁花不似锦 2019-10-16 14:38:00
我想使用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。


查看完整回答
反对 回复 2019-10-16
  • 3 回答
  • 0 关注
  • 774 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信