I'm assigning the function return checks code to a flag. The idea is to make the flag trigger the loop if the code is incorrect
char *leValidaCodigoAviao(char *msg, char *msgErro){
char *pNome=0, nome[MAX];
strcpy(nome, "");
int stringTam=0, flag=1, verificador=0;
do{
printf("%s", msg);
fflush(stdin);
scanf("%[^\n]s", nome);
if(strlen(nome)==0){
printf("%s", msgErro);
flag=0;
}else if(strlen(nome)<COD_ID || strlen(nome)>COD_ID){
flag=0;
}else{
verificador = verificaCodigo(nome);
printf("%d", verificador);
flag = verificador;
}
}while(!flag);
system("cls");
getch();
return pNome = nome;
}
int verificaCodigo(char nome[]){
int i, flag=1;
for(i=0;i<COD_ID;i++){
if(i<3){
if(!isalpha(nome[i])){
flag=1;
break;
}
}else{
if(!isdigit(nome[i])){
flag=1;
break;
}
}
}
return flag;
}