Ошибка шины с strncpy в C
Я работаю над тем же проектом, что и в этом вопросе, но с немного другим 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 выдает ошибку шины, когда вызывается эта конкретная строка. Как можно исправить эту ошибку шины и сохранить текущее решение, или было бы разумнее искать другое решение?
Единственная идея, которую я смог придумать до сих пор, состоит в том, чтобы по одному символу за раз помещать символы в строку, пока не будет достигнут конец слова.
2 ответа
Это не объявляет два указателя, это только один указатель и символ
char* newstring, in;
Это должно быть объявлено так:
char *newstring, *in;
Кроме того, как заметил кто-то другой, похоже, что вы не выделяете память для этих указателей.
Это:
typedef node {
void *data;
node_t *left;
node_t *right;
}
не имеет никакого смысла вообще. Нет никаких struct
Ключевое слово перед node
и нет имени для псевдонима типа, который вы пытаетесь ввести после }
и нет завершающей точки с запятой. Это не должно компилироваться.