【发布时间】:2019-08-12 15:53:00
【问题描述】:
我一直在用 C 语言开发一个项目,但在尝试使用 strcpy/memcpy/strncpy 复制 char* 时遇到问题,这些似乎都不起作用。出现的问题是大约 8 个或更多字符长的单词没有被完全复制。
typedef struct wordFrequency {
char * word;
int frequency;
struct wordFrequency *left, *right;
} *node;
node setnode(char * word) {
node newNode = (node)malloc(sizeof(node));
newNode->word = (char*)malloc(sizeof(word));
strcpy(newNode->word, word); //This is where I'm having trouble
newNode->frequency = 1;
newNode->right = NULL;
return newNode;
}
上面的代码是我认为是错误的主要原因,但我不知道在哪里修复它。我试过弄乱尺寸,但没用。
如果可能,有人可以向我解释一种复制所有字符的方法,或者我没有分配足够的空间吗?
【问题讨论】:
-
node newNode = (node)malloc(sizeof(node));不正确。建议避免使用指针类型定义并使用标准malloc模式 -
Chuckling "
strcpy/memcpy/strncpy,这些似乎都不起作用......" - 当你的脑海中浮现这个想法时,它不是strcpy/memcpy/strncpy不起作用.. ..:)你会想要评论:Is it a good idea to typedef pointers?. -
sizeof(node)是sizeof(a_pointer)和sizeof(word)是sizeof(a_pointer)通常在 x86_64 上为 8 字节,在 x86 上为 4 字节。这样就够了吗?