Я выделяю пространство для узла struct в переменной n0. Я сохраняю эту структуру в файле с помощью fwrite, но многие говорят, что я сохраняю указатель на ustr. Но мне нужно сохранить строку ustr, Не могли бы вы помочь?Написание struct + сохранение только указателя?
typedef struct {
unsigned char * ustr;
int height;
}node;
void node_init(node * n, int r) {
int i;
n->ustr = malloc((r + 1) * sizeof(unsigned char));
for (i = 0; i < r; i++) {
(n->ustr)[i] = random() & 0xff;
}
(n->ustr)[r] = 0;
n->height = -1;
}
void node_destroy(node * n) {
free(n->ustr);
n->height = -1;
}
int main() {
FILE* file_ptr = fopen("file1", "w+");
node n0;
node_init(&n0,2);
fwrite(&n0, sizeof(node), 1, file_ptr);
fclose(file_ptr);
node_destroy(&n0);
return 0;
}
Absolutelu '(n-> ustr) [i]', нет необходимости в круглых скобках. –
Да, важно то, что 'sizeof (node)' недостаточно. И ваш код может очень легко вызвать неопределенное поведение. –
добавить длину члена 'ustr' к' node' – BLUEPIXY