Desenvolva um projeto para cadastrar e listar itens de um laboratório em um arquivo.  O programa deve ter um menu principal com 4 opções: cadastrar um novo item, gravar novos itens no arquivo, listar os itens armazenados no arquivo e encerrar programa.  Para inserir um novo item, os dados informados pelo usuário devem ser gravados em membros de uma variável estruturada, e esta então, deverá ser gravada em um novo nó de uma lista encadeada.  Para gravar os novos itens no arquivo, deve-se percorrer a lista encadeada ler os dados dos nós e gravar no arquivo. Depois de efetuada a gravação, a lista deve ser liberada.  Para listar o conteúdo do arquivo, deve-se ler linha a linha, gravando os dados numa variável estruturada, e esta então, deverá ser gravada em um novo nó de uma lista encadeada. Finalizada a leitura do arquivo, deve-se imprimir o conteúdo da lista encadeada na tela do computador.  Obs1: Cada item do laboratório deve conter ao menos: nome, quantidade existente no laboratório, número de patrimônio, e 2 outras propriedades do item (cor, voltagem, sistema operacional, fabricante, material do qual é feito, etc). Essas duas propriedades mencionadas deve ser comum a todos os itens cadastrados.  Obs2: Obrigatoriamente usar (cria-lo) um TAD Lista.  Obs3: Cadastrar ao menos 10 itens do laboratório.  O QUE EU ESCREVI ATÉ AGORA NO MEU PROGRAMA ESTÁ ABAIXO, EU NÃO SEI COMO DECLARAR A FUNÇÃO GRAVAR, POR FAVOR ME AJUDEM.... MUITO OBRIGADO...     #include<stdio.h> #include<stdlib.h>  char i;  typedef struct tipo_laboratorio {     char nome, cor, fabricante;     double quantidade, numero;     struct item_laboratorio *proximo; }TADLista;  void cadastrar(TADLista ***ab); void gravar(TADLista **ab); void listar(TADLista *ab); int main() {     TADLista *ab = NULL;     TADLista *noatual;     char q;     do     {         printf ("            \nOpcoes\n            ");         printf ("C ou c -> Cadastrar\n");         printf ("G ou g -> Gravar\n");         printf ("L ou l -> Para Listar\n");         printf ("S ou s -> Sair");         scanf ("%c",&q);         switch (q)         {             case 'C':             case 'c':             cadastrar(&ab);             i++;             break;             case 'G':             case 'g':             gravar(&ab);             break;             case 'l':             case 'L':             listar(&ab);             break;             case 'S':             case 's':             break;             default:             printf ("\n\n\n Opcao não Valida! Tente Novamente!\n\n\n");         }         fflush (stdin);     } while ((q !='s') && (q != 'S'));     noatual = ab;     while (noatual != NULL)     {         ab = noatual -> proximo;         free (noatual);         noatual = ab;     } } void listar (TADLista *noatual) {     int i=0;     while (noatual != NULL)     {         i++;         printf ("\n\nNome: %d \nQuantidade: %f \nCor: %d \nFabricante: %d", i, noatual->nome, noatual->quantidade, noatual->cor, noatual->fabricante);         noatual = noatual->proximo;     } } void cadastrar(TADLista ***ab) {     TADLista *noatual, *nonovo;     int name, corr, fabric;     double quant;     printf ("\n Nome do item: ");     scanf ("%d", &name);     printf ("\n Cor do intem: ");     scanf ("%d", &corr);     printf ("\n Fabricante do item: ");     scanf ("%d", &fabric);     printf ("\n Quantidade de itens: ");     scanf ("%lf", &quant);     if (*ab == NULL)     {         *ab = (TADLista ***) malloc (sizeof(TADLista));         (**ab)->nome = name;         (**ab)->cor = corr;         (**ab)->fabricante = fabric;         (**ab)->quantidade = quant;         (**ab)->proximo = NULL;     }     else     {         noatual = *ab;         while (noatual->proximo != NULL)         noatual = noatual->proximo;         nonovo = (TADLista *) malloc (sizeof(TADLista));         nonovo-> nome = name;         nonovo-> cor = corr;         nonovo-> fabricante = fabric;         nonovo-> quantidade = quant;         noatual-> proximo = nonovo;     } } void gravar (TADLista *ab) {      }