Programa em C não mostra o erro.

Iniciado por AlexPaulino, 21 de Junho de 2011, 11:31

tópico anterior - próximo tópico

AlexPaulino

Na horade compilar não acha erro algum... mas na hora de listar os filmes cadastrados, aparece erro tanto no nome quanto no ano...

Já fiz em C e em C++ e os nome e o ano não aparecem ou aparecem estranhos na função listar()

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

#define TAM 200

int quantidade = 0;

typedef struct filme{

char nome[30];
int ano;

}novo[TAM];

void clear()
{
system("clear");
}

void pausar()
{
getchar();
}

void cadastrar(){

struct filme novo[TAM];

printf ("\nDigite o nome do filme a ser cadastrado: ");
scanf(" %s",novo[quantidade].nome);

printf("\nDigite o ano de gravacao filme: ");
scanf(" %d",&novo[quantidade].ano);

printf("\n\nO filme cadastrado foi: %s do ano %d", novo[quantidade].nome, novo[quantidade].ano);

quantidade++;

pausar();
clear();
}

void listar()
{
struct filme novo[TAM];

int k;

for(k=0; k<=quantidade; k++)
{
printf("Nome: %s Ano: %d \n", novo[k].nome, novo[k].ano);
}

pausar();
pausar();
}

int main(){
int opcao;

do{

printf("\n\t\t\t**** MENU ****");
printf("\n\n1) Cadastrar novo filme\n");
printf("2) Listar\n");
printf("3) Sair");


printf("\n\nDigite a opcao desejada\n");
scanf("%d",&opcao);

switch(opcao)
{
case 1:
cadastrar();
clear();
break;

case 2:
listar();
clear();
break;

case 3:
return 0;
}


} while(opcao<10000);

pausar();
return 0;
}
As coisas vão mudar. Você sabe, de repente algo novo aparece antes de você perceber. Mas sempre haverão sobreviventes

heitorgp

Você está recriando um vetor dentro da função cadastrar():

struct filme novo[TAM];

Essa linha não deve existir.


Além disso, você não está fazendo o typedef corretamente:

typedef struct filme{

char nome[30];
int ano;

}novo[TAM];


Ou você cria um vetor de struct, ou faz um typedef.

Conserte essa declaração e o programa vai funcionar.