0

我有一个结构 The_Word 有一个变量 char word[WORD_LENGTH]

我有以下

typedef struct The_Word
{
    char word[WORD_LENGTH];
    int frequency;
    struct The_Word* next;
} The_Word;

int someFunc(char* word)
{
/*Rest of method excluded*/

struct The_Word *newWord = malloc(sizeof(struct The_Word));

newWord->word = word; // error here. How can I assign the struct's word to the pointer word
}
4

3 回答 3

1

您需要使用strncpy来复制字符串:

#include <string.h>

int someFunc(char* word)
{
  /*Rest of method excluded*/

  struct The_Word *newWord = malloc(sizeof(struct The_Word));
  strncpy(newWord->word, word, WORD_LENGTH);
  newWord->word[WORD_LENGTH - 1] = '\0';
}

您应该小心检查字符串是否适合数组。就是这样,当参数char* word的长度大于WORD_LENGTH.

于 2012-10-20T02:02:34.657 回答
0

这会导致类型不兼容错误,因为在 C 中,数组被视为常量指针。数组和指针并不完全相同。尽管它们在大多数其他情况下的行为相同,但您不能重新分配数组指向的内容。

看起来您打算将字符串从函数参数复制到新分配的结构中。如果是这种情况,请按照其他人的建议使用 strncpy() 或 memcpy() 。

于 2012-10-20T02:28:57.433 回答
0

您不直接分配指针。相反,您应该使用strncpy()函数。

strncpy(newWord->word,word,strlen(word));

strcpy()memcpy()所有工作都类似。

typedef struct The_Word
{
    char word[WORD_LENGTH];
    int frequency;
    struct The_Word* next;
} The_Word;

int someFunc(char* word)
{
/*Rest of method excluded*/

  struct The_Word *newWord = malloc(sizeof(struct The_Word));
  memset(newWord->word,0,WORD_LENGTH);
  strcpy(newWord->word,word);
  /*return something*/
}
于 2012-10-20T02:01:42.927 回答