Autor Tópico: Programa em C não mostra o erro.  (Lida 1984 vezes)

Offline AlexPaulino

  • Usuário Ubuntu
  • *
  • Mensagens: 4
    • Ver perfil
Programa em C não mostra o erro.
« Online: 21 de Junho de 2011, 11:31 »
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()

Código: [Selecionar]
#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;
}
« Última modificação: 21 de Junho de 2011, 13:11 por AlexPaulino »
As coisas vão mudar. Você sabe, de repente algo novo aparece antes de você perceber. Mas sempre haverão sobreviventes

Offline heitorgp

  • Usuário Ubuntu
  • *
  • Mensagens: 1
    • Ver perfil
Re: Ajuda com programa em C.
« Resposta #1 Online: 21 de Junho de 2011, 11:55 »
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.