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) { }