• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

thespyk

Estrutura com arrays.

2 mensagens neste tópico

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");

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora