我有一个结构The_Word,它有一个变量char字[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
}
答案 0 :(得分: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
时。
答案 1 :(得分: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*/
}
答案 2 :(得分:0)
这会产生不兼容的类型错误,因为C数组被视为常量指针。数组和指针并不完全相同。虽然它们在大多数其他情况下的行为相同,但您无法重新指定数组指向的内容。
看起来您打算将函数参数中的字符串复制到新分配的结构中。如果是这种情况,请使用其他人建议的strncpy()或memcpy()。