0
I’m trying to validate the license plate of the car, but I’m not getting it. I tried to use the scanf instead of fgets and nothing. I have no idea what might be causing the problem.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/*
Lucas Correia Barros
Síntese
Objetivo: Cadastrar carros de um colecionador
Entrada: Placa do carro e valor de aquisição
Saída: Carro cadastrado (C), listagem(L) dos carros cadastrados ate o momento, que contenham na placa as tres primeiras
letras da placa especificada, e encerramento(E), mensagem caso seja tentado o cadastramento de carros acima do máximo
permitido (Cadastro cheio)
*/
#define MAX_CARROS 200
#define MAX_PLACA 7
#define MIN_PLACA 7
#define MAX_VALOR 999999
//Le e valida opcao
char opcaoDesejada();
//Le e valida placa
void leValidaTexto(int valorMin, int valorMax, char texto[]);
int verificaPlaca(char placa[]);
char validaPlacaRepetido(int contadorCarros,char placas[][MAX_PLACA],char placa[]);
int main(){
char opcao, placas[MAX_CARROS][MAX_PLACA]={0}, placa[MAX_PLACA]={0};
float valor_aquisicao[MAX_CARROS];
int contadorCarros=0, placaFlag=0, repetido=0;
do{
opcao = opcaoDesejada();
system("cls");
switch(opcao){
case 'c':
if(contadorCarros > MAX_CARROS){
printf("CADASTRO CHEIO!");
}
else
{
printf("Veiculo n%c %d\n", 167, contadorCarros+1);
leValidaTexto(MIN_PLACA, MAX_PLACA, placa);
printf("%s", leValidaTexto);
placaFlag = verificaPlaca(placa);
do{
repetido=validaPlacaRepetido(contadorCarros,placas,placa);
if((repetido)== 1 || (placaFlag==0)){
printf(" Placa ja existe \n");
}else{
strcpy(placas[contadorCarros],placa);
}
}while((repetido)== 1 || (placaFlag==0));
contadorCarros++;
}
}
}while(opcao != 'e');
return 0;
}
char opcaoDesejada(){
char opcao;
do{
printf("\nCADASTRO DE AUTOMOVEIS\n\n");
printf("C - CADASTRE UM CARRO\n");
printf("L - LISTE OS CARROS CADASTRADOS\n");
printf("E- ENCERRE O PROGRAMA\n");
scanf(" %c", &opcao);
opcao = tolower(opcao);
if(opcao != 'c' && opcao != 'l' && opcao != 'e'){
printf("\nOpcao desejada invalida. Tente novamente: ");
}
}while(opcao != 'c' && opcao != 'l' && opcao != 'e');
return opcao;
}
void leValidaTexto(int valorMin, int valorMax, char texto[]){
do{
printf("Digite a placa do veiculo:");
fflush(stdin);
fgets(texto, valorMax+1, stdin);
if(texto[strlen(texto)-1] == '\n'){
texto[strlen(texto)-1] = '\0';
}
if(strlen(texto)<valorMin || strlen(texto)<valorMax){
printf("Placa invalida");
}
}while(strlen(texto)<valorMin || strlen(texto)<valorMax);
}
int verificaPlaca(char placa[]){
int cont,flag=1;
for(cont=0;cont<7;cont++){
if(cont<3){
if(!isalpha(placa[cont])){
flag=0;
break;
}
}else
if(!isdigit(placa[cont])){
flag=0;
break;
}
}
return flag;
}
char validaPlacaRepetido(int contadorCarros,char placas[][MAX_PLACA],char placa[]){
int repetido=0,cont;
for(cont=0;cont<=contadorCarros;cont++){
if(stricmp(placas[cont],placa)==0){
repetido = 1;
return repetido;
}
}
return repetido;
}