[N]
Power Member
saudações. fiz este exercicio para uma cadeira:
no entanto come me a primeira letra que introduzo no titulo autor e editor.
Agradeço desde já a quem ajudar =)
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
// primeiro record que suporta 3 infos sobre um livro
typedef struct {
char Titulo [201];
char Autor[101];
char Editor [101];
} *TLivro;
// segundo record que alberga o ISBN de um livro e aponta para mais informacao sobre o livro [ISBN,ptr_TLivro]
typedef struct {
char ISBN [11];
TLivro Livro;
} TBiblio;
// F u n c t i o n s . . .
// a d _ l i v r o
TLivro ad_livro (TBiblio *Biblioteca, char *Novo_Titulo, char *Novo_Autor, char *Novo_Editor)
{
TLivro Livro;
Livro = malloc (sizeof (TLivro)); // alocacao de memoria para o novo livro
if (Livro == 0)
{
printf ("\n * * * * * * * * * * * * * ");
printf ("\n * * ");
printf ("\n * No RAM for you... * ");
printf ("\n * * ");
printf ("\n * * * * * * * * * * * * * ");
}
strcpy (Livro->Titulo,Novo_Titulo);
strcpy (Livro->Autor,Novo_Autor);
strcpy (Livro->Editor,Novo_Editor);
return (Livro);
}
// m o s t r a
void mostra (TBiblio *Biblioteca , int Num_Livros)
{
int i;
for (i = 0 ; i < Num_Livros ; i++)
{
printf ("\n\n Livro #%d ", i+1);
printf ("\n \t ISBN: %s", Biblioteca.ISBN);
printf ("\n \t Titulo: %s", Biblioteca.Livro->Titulo);
printf ("\n \t Autor: %s", Biblioteca.Livro->Autor);
printf ("\n \t Editor: %s", Biblioteca.Livro->Editor);
}
}
// L e r L i s t a L i v r o s
// funcao que le a info sobre um determinado numero (Num_Livros) de livros
void LerListaLivros (TBiblio *Biblioteca, int Num_Livros)
{
int i;
char ISBN [11], Titulo [201], Autor [101], Editor [201];
for (i = 0 ; i < Num_Livros ; i++)
{
printf("\n -> Livro #%d", i+1);
printf("\n \t ISBN? "); getchar();
fgets (ISBN, 11, stdin);
printf("\n \t Titulo? "); getchar();
fgets (Titulo, 201, stdin);
printf("\n \t Autor? "); getchar();
fgets (Autor, 101, stdin);
printf("\n \t Editor? "); getchar();
fgets (Editor, 201, stdin);
strcpy(Biblioteca.ISBN,ISBN);
Biblioteca.Livro = ad_livro (Biblioteca, Titulo, Autor, Editor);
}
mostra(Biblioteca, Num_Livros);
}
// T h e m o t h e r : * * M A I N * *
int main ()
{
int Num_Livros; // variavel que alberga o numero de livros a adiconar
//struct rec *p;
//p=(struct rec *) malloc (sizeof(struct rec));
TBiblio *Biblioteca = NULL; // variavel do tipo TBiblio que aponta para uma variavel do tipo TBiblio.
//aponta para o sitio/posicao onde esta o livro.
Biblioteca = (TBiblio *) malloc(sizeof(TBiblio)); // alocar memoria (podia ter sido feito em cima)
if (Biblioteca == 0)
{
printf ("\n * * * * * * * * * * * * * ");
printf ("\n * * ");
printf ("\n * No RAM for you... * ");
printf ("\n * * ");
printf ("\n * * * * * * * * * * * * * ");
}
printf ("\n -> Quantos livros pretende adicionar? ");
scanf ("%d", &Num_Livros);
if ((Num_Livros > 0) && (Num_Livros < 9999))
{
printf ("\n -> Pretende adicionar %d livro(s)... ", Num_Livros);
LerListaLivros (Biblioteca, Num_Livros);
}
printf ("\n -> Ate a proxima!! \n\n");
return (0);
}
// E n d O f C o d e
no entanto come me a primeira letra que introduzo no titulo autor e editor.
Agradeço desde já a quem ajudar =)