总线错误,在 C 中带有 strncpy



我正在处理与此问题相同的项目,但是类型定义略有不同:

typedef struct {
char* word;
int index;
} data_t;
typedef struct node node_t;
typedef node {
void *data;
node_t *left;
node_t *right;
}

我正在尝试将字符串拆分为单个单词,将其粘贴到data_t结构中,然后将其插入二叉搜索树中。 这个想法是,在遍历输入字符串时,当发现该字符是标记单词结尾的字符时,单词开头和结尾之间的字符数将被复制到字符串中,我尝试使用:

strncpy(newstring, (in+wordstart), (i-wordstart));

哪里:

char* newstring, in;
int i, wordstart;

但是,当调用该特定线路时,gcc 会给出总线错误。 如何修复此总线错误并保留当前解决方案,还是寻找不同的解决方案会更明智?

到目前为止,我能想到的唯一想法是,一次一个字符,将字符放入字符串中,直到到达单词的末尾。

这不会声明两个指针,这只是一个指针和一个字符

char* newstring, in;

应该这样声明:

char *newstring, *in;

此外,正如其他人指出的那样,您似乎没有为这些指针分配任何内存。

这个:

typedef node {
void *data;
node_t *left;
node_t *right;
}

根本没有任何意义。node之前没有struct关键字,在}之后没有您尝试引入的类型别名的名称,也没有终止分号。这不应该编译。

相关内容

  • 没有找到相关文章

最新更新