programação
#include
#include
#include
#define BUFFER 64
/* Estrutura da lista declarada para armazenar nossos dados. */ typedef struct lista { char *nome; int valor; char autor; struct lista *proximo;
} Dados;
/* Prototipo das funcoes de manuseio dos dados. */
Dados *inicia_dados(char *nome, int valor, char autor);
Dados *insere_dados(Dados *dados, char *nome, int valor, char autor); void exibe_dados(Dados *dados); void busca_dados(Dados *dados, char *chave);
Dados *deleta_dados(Dados *dados); int checa_vazio(Dados *dados);
/* Prototipo das funcoes do menu.*/ void insere(void); void exibe(void); void busca(void); void deleta(void);
/* Inicializa a estrutura de dados principal. */
Dados *principal = NULL;
/* Cria a nova lista apontando o proximo no para NULL. */
Dados *inicia_dados(char *nome, int valor, char autor) {
Dados *novo;
novo = (Dados *)malloc(sizeof(Dados)); novo->nome = (char *)malloc(strlen(nome)+1); strncpy(novo->nome, nome, strlen(nome)+1); novo->valor = valor; novo->autor = autor; novo->proximo = NULL;
return novo;
}
/* Como a lista nao esta mais vazia, apontamos o proximo no para lista anterior. */
Dados *insere_dados(Dados *dados, char *nome, int valor, char autor) {
Dados *novo;
novo = (Dados *)malloc(sizeof(Dados)); novo->nome = (char *)malloc(strlen(nome)+1); strncpy(novo->nome, nome, strlen(nome)+1); novo->valor = valor; novo->autor = autor; novo->proximo = dados;
return novo;
}
/* Percorre todos os campos da lista e imprime ate o ponteiro proximo chegar em NULL. */ void exibe_dados(Dados *dados) {
fprintf(stdout, "Cadastro:\n\n");
fprintf(stdout, "------------------------\n");
for (; dados != NULL; dados = dados->proximo) { fprintf(stdout, "Nome do livro: