我试图从用户读取一个单词,然后为该单词动态分配内存并将其存储在包含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);
答案 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()来防止错误。