You can write the data in a vector or in a Struct, depends on the implementation you will do, put some references at the end of the answer.
see an example of how to write an array of integers in the file
#include <stdio.h>
main() {
FILE *arq;
// Esses dados vão ser gravados !
int ret, vet[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
// arquivo alvo
char nomearq[] = "vet.dat";
// arquivo tem que ter permissão w para escrita e b para abrir como binario
arq = fopen(nomearq, "wb");
if (arq != NULL) {
// aqui é feita a escrita !!
ret = fwrite(vet, sizeof(int), 10, arq);
if (ret == 10)
printf("Gravacao com sucesso\n");
else
printf("Foram gravados apenas %d elementos\n", ret);
fclose(arq);
}
else
puts("Erro: criacao do arquivo");
}
You can recover the data written in the first example in this way
#include <stdio.h>
main() {
FILE *arq;
int i, ret, vet[10];
char nomearq[] = "vet.dat";
arq = fopen(nomearq, "rb");
if (arq != NULL) {
// estou recuperando AQUI
ret = fread(vet, sizeof(int), 10, arq);
if (ret == 10) {
printf("Elementos: ");
for (i = 0; i < 10; i++)
printf("%d ", vet[i]);
}
else
printf("Foram lidos apenas %d elementos\n", ret);
fclose(arq);
}
else
puts("Erro: abertura do arquivo");
}
You can save more complex structures using struct, example
#include <stdio.h>
const int na = 6;
typedef struct {
char nome[10];
int nota;
} tp_aluno;
main() {
tp_aluno alunos[] = {{"Luiz", 5}, {"Paulo", 5}, {"Maria", 3},
{"Luiza", 4}, {"Felipe", 8}, {"Fabiana", 6}};
int ret;
FILE *arq;
char nomearq[] = "turma.dat";
arq = fopen(nomearq, "wb");
if (arq != NULL) {
ret = fwrite(alunos, sizeof(tp_aluno), na, arq);
if (ret == na)
printf("Gravacao %d registros com sucesso\n", ret);
else
printf("Foram gravados apenas %d elementos\n", ret);
fclose(arq);
}
else
puts("Erro: abertura do arquivo");
}
To recover the data you can do so
#include <stdio.h>
const int na = 6;
typedef struct {
char nome[10];
int nota;
} tp_aluno;
main() {
tp_aluno alunos[na];
int i, ret;
FILE *arq;
char nomearq[] = "turma.dat";
arq = fopen(nomearq, "rb");
if (arq != NULL) {
ret = fread(alunos, sizeof(tp_aluno), na, arq);
if (ret == na) {
printf("Lidos %d registros com sucesso\n", ret);
for (i = 0; i < ret; i++)
printf("%s %d\n", alunos[i].nome, alunos[i].nota);
}
else
printf("Foram lidos apenas %d elementos\n", ret);
fclose(arq);
}
else
puts("Erro: abertura do arquivo");
}
Like all college work, it requires research and effort, you can consult the commands files and Struct
The question is about how to read/write to a file, or how to serialize/deserialize the chained list to write as text?
– bfavaretto
It would be important also you [Dit] the question to show how you structured your chained list in the program.
– bfavaretto