[英]Using malloc to allocate memory for a string (c++ source)
我正在尝试创建一个结构数组,我已经完成了这个工作,而且我必须接收用户的输入。 第一条数据将是描述(字符串)。 我也必须为其分配内存。 我不是想输入的字符串有多大,但是我认为我没有正确设置它。 谁能给我提示或我可以查看的页面以找出答案?
不胜感激。 以下是重要的代码片段:
struct myExpenses
{
char *description;
float cost;
};
int main (void)
{
struct myExpenses *pData = NULL;
struct myExpenses expenses[60];
int exit=0;
int i = 0;
char buffer[81] = "";
printf("Please enter all your descriptions:\n");
for (i=0;i < 60; i++)
{
fgets(buffer,stdin);
expenses[i].description=(char *)malloc sizeof(buffer);
}
可以使用strdup代替malloc()来自动为您分配合适大小的缓冲区。
expenses[i].description = strdup( buffer );
除了在malloc
调用周围缺少一对括号并没有真正说明问题所在之外,您还只是分配内存而不复制字符串。 可以使用strdup
函数在一个函数调用中完成:
printf("Please enter all your descriptions:\n");
for (i=0;i < 60; i++)
{
fgets(buffer,stdin);
expenses[i].description=strdup(buffer);
}
完成描述后,请记住free
调用所有描述,否则将导致内存泄漏。
在给定的示例上编辑如何free
使用:
for (i = 0; i < 60; i++)
free(expenses[i].description);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.