Opa, eu sou meio novato em programação, mas meu problema é o seguinte.
Eu coloquei uma condição para sair dos loops, onde eu tenho que inserir o "s" para sair, mas o problema é que mesmo eu tendo criado diferentes variáveis, uma para cada loop,
ele sai dos loops como se fosse uma variável só, assim, ou saindo do loop principal, ou fica em loop infinito no case 3.
Não sei se ficou bem claro, mas é isso.
Se alguém puder ajudar, só agradeço.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
struct cad_livro{
int cod;
char tit [41];
char autor [41];
char area [41];
char ano [5];
char edit[41];
};
int main(){
setlocale(LC_ALL,"");
// Vetor de registros
struct cad_livro livro [20];
// Registro auxiliar para ordenação
struct cad_livro aux;
// "i1" = Índice 1; "i2" = Índice2; "op" = Opção; "cont" = Contagem de códigos; "n" = Número de busca de código; "busca" = Retorno de busca de código;
int i1,i2,op,cont,n,busca;
// "sair" = Sair dos loops menores; "sair_prog" = Sair do loop principal;
char sair_cad,sair_pes,sair_ord,sair_prog;
cont = 0;
do{
printf("\n =============== Menu =============== \n");
printf("\n1 - Cadastrar livro");
printf("\n2 - Imprimir informações do livro");
printf("\n3 - Pesquisar livros por código");
printf("\n4 - Ordenar livros por ano");
printf("\n5 - Sair do programa\n\n\n");
printf("\nOpção: ");
scanf("%d",&op);
system("CLS");
fflush(stdin);
switch (op){
case 1:{
do{
printf("\n =============== Cadastrar =============== \n\n");
livro[cont].cod = cont;
printf("Título: ");
gets(livro[cont].tit);
printf("Autor: ");
gets(livro[cont].autor);
printf("Área: ");
gets(livro[cont].area);
printf("Ano: ");
gets(livro[cont].ano);
printf("Editora: ");
gets(livro[cont].edit);
cont++;
system("CLS");
printf("\n =============== Cadastrar =============== \n\n");
printf("Voltar para o menu [s/n]? ");
scanf("%c",&sair_cad);
system("CLS");
fflush(stdin);
}while(sair_cad != 's');
break;
}
case 2:{
printf("\n =============== Imprimir =============== \n");
for(i1 = 0; i1 < 20; i1++){
printf("\nCódigo: %d",livro[i1].cod);
printf("\nTítulo: %s",livro[i1].tit);
printf("\nAutor: %s",livro[i1].autor);
printf("\nÁrea: %s",livro[i1].area);
printf("\nAno: %s",livro[i1].ano);
printf("\nEditora: %s",livro[i1].edit);
printf("\n ------------- \n");
}
break;
}
case 3:{
do{
printf("\n =============== Pesquisar =============== \n");
busca = 0;
printf("\nBuscar o código: ");
scanf("%d",&n);
for(i1 = 0; i1 < 20; i1++){
if(n == livro[i1].cod){
busca = 1;
}
}
if(busca == 1){
printf("\n\nCódigo: %d",livro[n].cod);
printf("\nTítulo: %s",livro[n].tit);
printf("\nAutor: %s",livro[n].autor);
printf("\nÁrea: %s",livro[n].area);
printf("\nAno: %s",livro[n].ano);
printf("\nEditora: %s",livro[n].edit);
}
else{
printf("Livro não cadastrado");
}
printf("Fazer nova pesquisa [s/n]? ");
scanf("%c",&sair_pes);
}while(sair_pes != 's');
break;
}
case 4:{
printf("\n =============== Ordernar =============== \n");
for(i1 = 0; i1 > 20; i1++){
for(i2 = i1+1; i1 > 20; i2++){
if(livro[i1].ano > livro[i2].ano){
aux = livro[i1];
livro[i1] = livro[i2];
livro[i2] = aux;
}
}
}
break;
}
case 5:{
printf("Deseja sair[s/n]? ");
scanf("%c",&sair_prog);
system("CLS");
if(sair_prog == 's'){
printf("Saindo... Tchau!!");
}
break;
}
}
}while (sair_prog != 's');
return(0);
}