为作为结构一部分的char指针分配内存

时间:2010-04-21 03:49:44

标签: c memory-management

我试图从用户读取一个单词,然后为该单词动态分配内存并将其存储在包含char *的结构数组中。我一直得到函数â'strlen的隐式声明,所以我知道我在某处出错。

struct unit
{
  char class_code[4];
  char *name;
};

char buffer[101];
struct unit units[1000];

scanf("%s", buffer);

units[0].name = (char *) malloc(strlen(buffer)+1);
strcpy(units[0].name, buffer);

4 个答案:

答案 0 :(得分:7)

Implicit declaration of function 'strlen'表示您忘记#include声明它的标头,在本例中为<string.h>

这是我在您的代码中看到的唯一错误。

答案 1 :(得分:4)

除了缺少标题string.h之外,您还可以用strdup替换malloc + strcpy。

units[0].name = strdup(buffer);

答案 2 :(得分:2)

#include <string.h>

答案 3 :(得分:1)

确保你在做:

#include <string.h>

包含strlen()函数声明。

另外,你应该使用strnlen()和strncpy()来防止错误。