Ir ao conteúdo

Posts recomendados

Postado

Alguem sabe me dizer porque isso esta acontecendo?

Compila sem erro na sintaxe mas não chama as funções.

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define BUFFER 54

typedef struct livro{
struct livro *proximo; 
	char titulo[50];
	char editora[50];
	char autor[50];
	char data[7];
    char registro[11];
    char busca[50];
    int info;
}Lista;
Lista* inicializa (void);
Lista* insere (Lista *l, int i);
void imprime (Lista *l);
int vazia (Lista *l);
Lista* busca (Lista *l);
void libera (Lista *l);
Lista* retira (Lista *l, int r);
Lista* altera (Lista *l, int a);
int menu (int escolha);
char resposta = 'S';
int escolha;
void sair (Lista *l);

main () {
	Lista *l;
	l = inicializa();
	char op;
printf ("- BIBLIOTECA DA JESSIE -\n");
do {
switch (escolha) {
    case '0': inicializa();
    break;
	
	case '1': insere;
	break;
    
	case '2': retira;
	break;
	
	case '3': busca;
	break;
	
	case '4': libera;
	break;
	
	case'5': altera;
	break;
	
	case '6': imprime;
	break;
	
	case '7': sair;
	break;
	
}
} while ( op != 'S');
system("pause");
return (6);
}
// (INICIO) Menu de opção da usuario
int menu (int escolha) {
	printf ("\n- opções PARA O USUARIO -");
    printf ("n  (0) - Incia Nova lista.");
	printf ("\n (1) - Inserir novos livros.");
    printf ("\n (2) - Remocao de livros.");
    printf ("\n (3) - Buscar de um livro.");
    printf ("\n (4) - Libera espaço na memoria.");
    printf ("\n (5) - Alteracao de informações do livro.");
    printf ("\n (6) - Apresentar todos os livros.");
    printf ("\n (7) - Sair.");
    printf ("\nEscolha a opcao que deseja realizar? ");
    scanf ("%d", &escolha);
    system("pause");
	return (escolha);
    
} // (FIM) Menu de opção da usuario

Lista* inicializa (void) {
return NULL;
}
// (INICIO) Cadastro de livros
Lista* insere (Lista *l, int i) { 
printf ("\n- INSERIR NOVOS LIVROS -");
Lista* novo = (Lista *) malloc(sizeof(Lista));
	printf("\nDigite o titulo do livro: ", novo);
    fflush(stdin);
	gets(l -> titulo);
	fflush(stdin);
               
    printf("Digite a editora do livro: ", novo);
    fflush(stdin);
    gets(l -> editora);
    fflush(stdin);
               
    printf("Digite o nome do autor do livro: ", novo);
    fflush(stdin);
    gets(l -> autor);
    fflush(stdin);
    
    printf("Digite a data de publicacao: ", novo);
    fflush(stdin);
    gets(l -> data);
    fflush(stdin);
    
    printf("Digite o numero do registro: ", novo);
    fflush(stdin);
    gets(l -> registro);
    fflush(stdin);
novo-> info = i;
novo-> proximo = l;
return novo;
printf ("\nDeseja cadastrar mais um livro? Sim (S) | Nao (N): ");
scanf ("%c", & resposta);
fflush(stdin);
if (resposta == 's') {
	return (novo);
} else {
	resposta == 'n';
	printf("\nEscolha a opcao que deseja realizar? ");
    scanf("%d", &escolha);
    system("pause");
}
} // (FIM) Cadastro de livros

Alguem sabe me explicar o que esta acontecendo? O programa compila sem erro na sintaxe e quando é pra executar não chama as funções, alguem me diz porque?

Postado
int escolha;
...
switch (escolha) {
    case '0': inicializa();
	break;
	case '1': insere;
	break;
    case '2': retira;
	break;

você define escolha como int, mas trata como char?

As funções "insere", "retira", etc. pedem parâmetros e você não os passou.

Faltou chamar a função "menu".

  • Curtir 1
Postado
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define BUFFER 54

typedef struct livro{
struct livro *proximo; 
	char titulo[50];
	char editora[50];
	char autor[50];
	char data[7];
    char registro[11];
    char busca[50];
    int info;
}Lista;
Lista* inicializa (void);
Lista* insere (Lista *l, int i);
void imprime (Lista *l);
int vazia (Lista *l);
Lista* busca (Lista *l);
void libera (Lista *l);
Lista* retira (Lista *l, int r);
Lista* altera (Lista *l, int a);
char resposta = 'S';
int escolha;
void sair (Lista *l);

main () {
	Lista *l;
	l = inicializa();
	char op;
	int escolha, i, b, *p, *novo;
printf ("- BIBLIOTECA DA JESSIE -\n");
do {
	system ("cls");
	printf ("\n- opções PARA O USUARIO -");
    printf ("n  (0) - Incia Nova lista.");
	printf ("\n (1) - Inserir novos livros.");
    printf ("\n (2) - Remocao de livros.");
    printf ("\n (3) - Buscar de um livro.");
    printf ("\n (4) - Libera espaço na memoria.");
    printf ("\n (5) - Alteracao de informações do livro.");
    printf ("\n (6) - Apresentar todos os livros.");
    printf ("\n (7) - Sair.");
    printf ("\nEscolha a opcao que deseja realizar? ");
    scanf ("%d", &escolha);
    system("pause");
	return (escolha);
switch (escolha) {
    case '0': inicializa();
    break;
	
	case '1': insere(novo-> proximo = l);
	break;
    
	case '2': retira(Lista *ant = NULL);
	break;
	
	case '3': busca(p -> info == b);
	break;
	
	case '4': libera(Lista *p = l;);
	break;
	
	case '5': altera();
	break;
	
	case '6': imprime(p = l; p != NULL; p = p->proximo);
	break;
	
	case '7': sair();
	break;
	
}
} while ( escolha != 'S');
system("pause");
return 0;
}

Lista* inicializa (void) {
return NULL;
}
//

Fiz umas mudanças no codigo e fica dando erro na hora de compilar, sabe me explicar como faço para corrigir isso?

Postado

Como tinha dito, escolha é do tipo inteiro, então:

switch (escolha) {
    case 0: inicializa();
    break;
	
	case 1: insere(l, 0);
	break;
    
	case 2: retira(l, 0);
	break;

	case 3: busca(l);
	break;
	
	case 4: libera(l);
	break;
	
	case 5: altera(l, 0);
	break;
	
	case 6: imprime(l);
	break;
	
	case 7: sair(l);
	break;

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!