【发布时间】:2012-10-23 07:43:43
【问题描述】:
我正在从事与 question 相同的项目,但 typedef 略有不同:
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只是指向一些随机内存的指针。您确实需要让它们指向一些有效的内存,即属于进程的内存。 -
是的,内存根本没有被分配。坚持
newstring = malloc(strlen(in)-wordstart);似乎可以让它发挥作用。 -
考虑分配
+1字符来存储0-终止符。 @disgruntledperson
标签: c substring c-strings strncpy bus-error