Falha de Segmentação em C

1. Falha de Segmentação em C

Yuri Coelho ROSÁRIO
Shadowrun

(usa Outra)

Enviado em 05/03/2017 - 07:01h

Olá pessoal, necessito fazer o seguinte programa em C:

Seja uma estrutura para descrever os carros de uma determinada revendedora, contendo os
seguintes campos:
marca: string de tamanho dinâmico
ano: inteiro
cor: string de tamanho dinâmico
preço: real
a) Escrever a definição da estrutura carro.
b) Declarar o vetor vetcarros do tipo da estrutura definida acima, de tamanho dinâmico.
Crie um menu para:
c) Definir um bloco de programa para ler o vetor vetcarros.
d) Definir um bloco de programa que receba um preço e imprima os carros (marca, cor e ano) que
tenham preço igual ou menor ao preço recebido.
e) Defina um bloco de programa que leia a marca de um carro e imprima as informações de todos
os carros dessa marca (preço, ano e cor).
f) Defina um bloco de programa que leia uma marca, ano e cor e informe se existe ou não um carro
com essas características. Se existir, informar o preço.


Estou fazendo e compilando ele por partes, porém me deparei com uma "falha de segmentação" logo no bloco de ler o vetor, durante a execução. Vejam o código:

// Declarando bibliotecas auxiliares:

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

// Estrutura do carro:

typedef struct
{
char marca[20];
char cor[20];
int ano;
float price;
} CARROS;

CARROS *vet_carros; // Declarando "vet_carros" como variável global.

// Declarando funções auxiliares:

void alocaVetor (int quant, CARROS *vet_carros);
void lerCarros (int quant, CARROS *vet_carros);

// Início:

int main (void)
{
int quant; // Variável que irá armazenar o tamanho do vetor.

printf ("Defina a quantidade de carros a serem lidos: ");
scanf ("%d", &quant);

alocaVetor (quant, vet_carros);

lerCarros (quant, vet_carros);

return 0;
}

// Função responsável por alocar o vetor de carros:

void alocaVetor (int quant, CARROS *vet_carros)
{
vet_carros = (CARROS *) malloc (quant * sizeof (CARROS));
if (vet_carros == NULL)
{
printf ("\aERRO DE MEMORIA!!!");
exit (-1);
}
}

// Função responsável por solicitar as entradas ao usuário e as ler:

void lerCarros (int quant, CARROS *vet_carros)
{
printf ("\nEntre com a marca: ");
setbuf(stdin, NULL);
fgets (vet_carros -> marca, quant, stdin);

printf ("Entre com a cor: ");
setbuf(stdin, NULL);
fgets (vet_carros -> marca, quant, stdin);

printf ("Entre com o ano: ");
scanf ("%d", &vet_carros -> ano);

printf ("Entre com o preco: ");
scanf ("%f", &vet_carros -> price);
}


Alguém saberia solucionar? Obrigado!


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts