thespyk Posted May 11, 2009 at 04:19 PM Report #263046 Posted May 11, 2009 at 04:19 PM Boas. Ando no 10º. ano e estamos a dar estruturas com arrays. o objectivo do meu trabalho é conseguir fazer uma "base de dados" em que grave o que digito, neste caso a marca e o modelo de um carro e que depois de para mostrar,editar e remover. A minha duvida está em mostrar.. Depois de inserir os dados (case 1) não os consigo mostrar (case 2).. Se alguem me puder dar uma ajuda.. agradecia #include<stdio.h> #include<stdlib.h> /*MARCA E MODELO*/ typedef struct { char marca; char modelo; }CARRO; int i,x,qtd; int menu(){ printf("MENU\n"); printf("---------------------\n"); printf("1 - Opcao - Inserir carro\n"); printf("2 - Opcao - Mostrar carros\n"); printf("3 - Opcao - Remover carro\n"); printf("4 - Sair\n\n"); } int registos(){ printf("Introduza o n de registos:"); scanf("%d",&qtd); } void inserir(){ CARRO ARR[qtd]; for(i=0;i<qtd;i++){ printf("Digite o nome da marca:"); scanf("%s",&ARR[i].marca); printf("Digite o nome do modelo:"); scanf("%s",&ARR[i].modelo); printf("\n"); } } void mostrar(){ CARRO ARR[qtd]; for(i=0;i<qtd;i++){ printf("Marca: %s \n",ARR[i].marca); printf("Modelo: %s \n\n",ARR[i].modelo);} } main(){ CARRO ARR[qtd]; menu(); scanf("%d",&x); switch(x) { case 1: registos(); inserir(); menu(); scanf("%d",&x); case 2: mostrar(); case 4: exit(0); default: printf("Opcao invalida"); scanf("\n"); } system("PAUSE"); }
merlin3000 Posted May 11, 2009 at 07:01 PM Report #263094 Posted May 11, 2009 at 07:01 PM O ARR em inserir é diferente do ARR em mostrar. Quando declaras uma variável dentro de uma função essa passa a pertencer a essa função, pertence ao seu scope, e vai desaparecer quando essa função termina (a menos que seja reservada explicitamente, como por exemplo com o malloc). Isto aplica-se a qualquer bloco de código dentro de {}. Podes ver um pequeno exemplo aqui. No teu caso o ARR em mostrar é um novo array do tipo carro e vai estar vazio. Podes fazer de ARR uma variável global. Criar é Divertido
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now