Ir ao conteúdo
  • Cadastre-se
jessiesp

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

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?

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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?

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!