Ir ao conteúdo
  • Cadastre-se

C Compila mas nao executa e nem chama as funções


jessiesp

Posts recomendados

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?

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

#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?

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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...