Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- typedef struct livro{
- char[10] nome;
- char[20]autor;
- char[5]ano;
- char[20] descrição;
- char[10] palavrachave;
- }livro;
- typedef struct sBiblioteca{
- livro l;
- struct sBiblioteca *seguinte;
- }*Biblioteca, Nodobiblioteca;
- Biblioteca inserir (Biblioteca b, char *nome,char* ano, char* descricao, char* palavrachave, char*autor){
- Biblioteca novonodo = (Biblioteca) malloc(sizeof(Nodobiblioteca));
- livro novolivro;
- strcpy(novolivro.nome,nome);
- strcpy(novolivro.autor,autor);
- strcpy(novolivro.palavrachave,palavrachave);
- strcpy(novolivro.descricao,descricao);
- strcpy(novolivro.ano,ano);
- novonodo->l = novolivro;
- novonodo->seguinte = b;
- return novonodo;
- }
- Biblioteca remover (Biblioteca b, char *nome){
- Biblioteca x,y;
- if (x){
- if(!strcmp(x->l.nome,nome)){
- y = x;
- free (y);
- return x->seguinte;}
- for(x=b,!x->seguinte,x=x->seguinte){
- if(!strcmp(x->seguinte->l.nome,nome)){
- y = x->seguinte;
- x->seguinte = x->seguinte->seguinte;
- free(y);
- return b;
- }
- }
- printf("ERRO, Livro Não Encontrado\n");
- return b;
- }
- void ListarLivros (Biblioteca b){
- if(!b)
- printf("Não existem livros");
- else
- (while b){
- printf("%s,%s",b->l.nome, b->l.autor);
- b=b->seguinte;
- }
- }
- void Lista_Livro (Biblioteca b, char *nome){
- if(!b) printf("Erro. Não existe o livro não Encontrado");
- if(!strcmp(b->l.nome, nome)) printf("%s,%s,%s,%s,%s",b->l.nome, b->l.autor, b->l.ano, b->l.descrição, b->l.palavrachave);
- else
- Lista_Livro(b->seguinte, nome);
- }
- Biblioteca altera (Biblioteca b, char *nome){
- if(b)
- {
- if(!strcmp(b->l.nome, nome))
- b->l = alteraLivro(b->l);
- else
- b->seguinte = altera (b->seguinte, nome);
- return b;
- }
- printf("Erro, não existe esse livro\n");
- return NULL;
- }
- Livro alteraLivro (Livro l){
- char[10] nome;
- char[20] autor;
- char[5] ano;
- char[20] descrição;
- char[10] palavrachave;
- printf("Digite o nome do livro\n");
- scanf("%s",nome);
- strcpy(l.nome,nome);
- printf("Digite o nome do autor\n");
- scanf("%s",autor);
- strcpy(l.autor,autor);
- printf("Digite o ano\n");
- scanf("%s",ano);
- strcpy(l.ano,ano);
- printf("Digite uma descrição\n");
- scanf("%s",descrição);
- strcpy(l.descrição,descrição\n);
- printf("Digite uma palavra-chave")
- scanf("%s",palavrachave);
- strcpy(l.palavrachave,palavrachave\n);
- }
- int main(){
- int x = -1;
- Biblioteca b = NULL;
- Biblioteca x;
- char[10] nome;
- char[20] autor;
- char[5] ano;
- char[20] descrição;
- char[10] palavrachave;
- FILE *ficheiro;
- ficheiro = fopen("biblio.dat", "rw");
- if (ficheiro == NULL) {
- printf("Ficheiro não disponivel\n");
- return 0;
- }
- while(ficheiro != EOF){
- }
- while (x!=0){
- printf("Insira a opção:\n1-Inserir\n2-Remover\n3-Alterar\n4-Listar Geral\5-Listar Único\n0-Sair");
- scanf("%d\n",&x);
- switch(x){
- case(1){
- printf("Nome ?\n")
- scanf("%s",nome);
- printf("Autor ?\n")
- scanf("%s",autor);
- printf("Ano ?\n")
- scanf("%s",ano);
- printf("Descricao ?\n")
- scanf("%s",descricao);
- printf("Palavrachave ?\n")
- scanf("%s",palavrachave);
- b = inserir (b,nome,ano,descricao,palavrachave,autor);
- break;}
- case(2){
- printf("Nome ?\n")
- scanf("%s",nome);
- b = remover(b,nome);
- break;}
- case(3){
- printf("Nome ?\n")
- scanf("%s",nome);
- b = altera (Biblioteca b,nome)
- break;}
- case(4){
- ListarLivros (b);
- break;}
- case(5){
- printf("Nome ?\n")
- scanf("%s",nome);
- Lista_Livro (b,nome);
- break;}
- case(0){
- for (x=b;!x;x=x->seguinte)
- fprintf(ficheiro, "%s,%s,%s,%s,%s\n",x->l.nome,x->l.autor,x->l.descricao,x->l.ano,x->l.palavrachave);
- fclose(ficheiro);
- break;}
- default{
- printf("Opção Incorrecta\n");
- break;}
- }
- }
Add Comment
Please, Sign In to add comment