Я пытаюсь скопировать содержимое структуры в список в двоичный файл.Скопировать список в двоичный файл
Вот мои структуры декларации:
typedef struct
{
char dni[9];
char nombre[100], apellido[100];
double deuda;
} t_datos;
struct s_nodo
{
t_datos dati;
struct s_nodo *sig;
};
typedef struct s_nodo *t_nodo;
void newfile(t_nodo, FILE *);
В основном я заполнить список с некоторыми данными из файла .dat, и выглядит хорошо, потому что если я распечатать список всех есть ok.I've есть проблема при попытке скопировать структуру i в списке в новый двоичный файл.
//open and copy old binary file to the list...
fc = fopen("c:\\norep.dat", "w+b");
if (fc == NULL)
{
puts("Error");
exit(-1);
}
newfile(lista, fc);
Вот моя функция:
void newfile(t_nodo lista, FILE *fc)
{
if (lista != NULL)
{
fwrite(lista->dati, sizeof(t_datos), 1, fc);
newfile(lista->sig, fc);
}
}
Ошибка я получаю:
error: incompatible type for argument 1 of 'fwrite'|
Я знаю, что ошибка, вероятно, в том, как я передаю список функции, я видел прототип fwrite, но я не знаю, как мне исправить код.
теперь отлично работает, но я все еще некоторое замешательство в использовании указателей в этой функции; в моей главной объявляю lista как: t_nodo lista = NULL; и в моей структуре t_nodo является указателем на структуру s_nodo, поэтому lista не является указателем? почему я должен добавить & оператора? – Marco
Вы сбиты с толку, потому что вы его typedef. При объявлении указатель должен иметь '*' рядом с идентификатором, это хорошо. 't_datos' не является указателем, это псевдоним анонимной' struct', который вы используете для хранения данных. 't_datos * dati' сделает указатель' dati'. Но тогда вам понадобится 'malloc()', чтобы выделить место для него. –