Bom dia amigos.
Estou montando um trabalho da facul que seria basicamente um programa de estacionamento.
Como estou começando a programar tenho usado muitos codigos que acho de funçoes que posso reutilizar.
E ajudas que obtenho pela internet.
Agora meu programa esta dando um erro pra compilar que não sei onde identificar o erro, podem me ajudar?
Segue o codigo em c feito no dev c++ portable..
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
void INSERIR (int i);
void INICIALIZA();
void CADASTRAR_VEICULO();
void LISTAR_VEICULOS();
struct
{
char placa_carro[8], modelo[20], cor[10];
int status;
}carro[10];
int numero_de_veiculos=0; //contador de veiculos estacionados.
//------------------------------------------------------------------------
main ()
{
int OP;
FILE* P;
INICIALIZA ();
P=fopen("carro.txt", "r");
fread(&carro, sizeof(carro), 1, P);
fclose(P);
do{
printf ("\n1.Cadastrar veiculo. \n2.Listar veiculo. \n3.Sair \n\nOpcao: ");
scanf ("%d", &OP);
switch (OP)
{
case 1:
{
system("cls");
CADASTRAR_VEICULO();
break;
}
case 2:
{
system("cls");
LISTAR_VEICULOS();
break;
}
case 3:
break;
default:
{
system ("cls");
printf ("\nOpcao Invalida.\nTecle ENTER para voltar ao Menu.");
getch();
system("cls");
}
}
} while(OP!=3);
getchar();
}
//----------------------------------------------------------------
void INICIALIZA()
{
int i;
for(i=0; i<10; i++)
carro[i].status=0;
}
//----------------------------------------------------------------
void INSERIR (int i)
{
char placa[8];
int i2, teste, tamanho_placa;
FILE* P;
printf ("\nDigite a placa do veiculo: ");
fflush(stdin);
gets(placa);
strupr(placa); //Deixa em maiusculo as letras da placa.
for (i2=0; i2<10; i2++)
{
if (strcmp(placa, carro[i2].placa_carro)==0)
{
printf ("\nVeiculo ja cadastrado, informe outra placa");
INSERIR(i);
}
}
strcpy(carro[i].placa_carro, placa);
tamanho_placa=strlen(carro[i].placa_carro);
if (tamanho_placa != 7)
{
if (tamanho_placa < 7)
{
printf ("\nPlaca invalida, digitos insuficientes.");
INSERIR(i);
}
else // Tamanho placa > 7.
{
printf ("\nPlaca invalida, digitos a mais.");
INSERIR(i);
}
}
for (i2=0; i2<3; i2++ ) //Testa se os 3 primeiros digitos sao letras.
{
teste=isalpha(carro[i].placa_carro[i2]); //Retorna 1 se for letras.
if (teste==0)
{
printf ("\nPlaca invalida, os 3 primeiros digitos devem ser letras.");
INSERIR(i);
}
}
for (i2=3; i2<7; i2++)
{
teste=isalpha(carro[i].placa_carro[i2]); //Retorna 1 se for letras.
if (teste==1)
{
printf ("Placa invalida, os 4 ultimos digitos devem ser numeros.");
INSERIR(i);
}
}
printf ("\nDigite o modelo: ");
fflush (stdin);
gets (carro[i].modelo);
strlwr (carro[i].modelo); //Deixa a string em minusculo.
carro[i].modelo[0]=toupper(carro[i].modelo[0]); // Deixa primeiro caractere maiusculo.
printf ("\nDigite a cor: ");
fflush (stdin);
gets (carro[i].cor);
strlwr(carro[i].cor);
carro[i].cor[0]=toupper(carro[i].cor[0]);
carro[i].status = 1;
P = fopen ("carro.txt", "w");
fwrite (&carro, sizeof(carro), 1, P);
fclose(P);
}
//--------------------------------------------------------------------
void CADASTRAR_VEICULO()
{
int i, flag = 1;
for (i=0; i<10; i++)
{
if (carro[i].status==0)
{
INSERIR (i);
flag = 0;
system ("cls");
break;
}
}
if (flag==1)
{
printf ("\nSem espaço para cadastrar, pressione enter para voltar ao Menu.");
getch();
system ("cls");
}
}