0
I’m doing a college paper that’s asked to do a library book registration system, The whole part of the registration is already ready but the research part is missing, which is where I don’t know how to do it because I’m new to the C language area and I’m leaving my code here so I can take a look and maybe help me to do a search in a file. txt
#include <stdio. h> #include <stdlib. h>
void menu(){
printf ("\n\n1 - Cadastrar\n");
printf ("2 - Listar todos os livros.\n");
printf ("3 - Listar todas as revistas.\n");
printf ("4 - Listar as obras por caixa.\n");
printf ("0 - Sair\n");
}
FILE* AbreArquivo(char modo, char caminho[100]){
FILE *arquivo;
switch(modo){
case 'g':
arquivo = fopen(caminho,"wt");
break;
case 'l':
arquivo = fopen(caminho,"rt");
break;
case 'a':
arquivo = fopen(caminho,"a");
break;
}
if(arquivo==NULL){
printf("Nao foi possivel abrir o arquivo");
exit(0);
}
return arquivo;
}
void FecharArquivo(FILE *arquivo){
fclose(arquivo);
}
void Cadastra(char titulo[1000],char editora[1000], char autor[1000], int caixa, int ano, int ISBN){
FILE *arquivo;
arquivo = AbreArquivo('a', "livros.txt");
fprintf(arquivo, "%s %s %s %d %d %d\n\n", titulo, autor, editora, caixa, ano, ISBN);
FecharArquivo(arquivo);
}
void CadastraRevista(char titulo[70],char editora[70], char autor[70], int caixa, int ano, int ISBN){
FILE *arquivo;
arquivo = AbreArquivo('a', "revistas.txt");
fprintf(arquivo, "%s %s %s %d %d %d\n\n", titulo, autor, editora, caixa, ano, ISBN);
FecharArquivo(arquivo);
}
void Listar(){
FILE *arquivo;
char titulo[1000];
char autor[1000];
char editora[1000];
int caixa;
int ano;
int ISBN;
arquivo = AbreArquivo('l',"livros.txt");
printf("\t\t\t\t\t\tListando Livros....\n\n");
while(!feof(arquivo)){
fscanf(arquivo,"%1000[^\n] %1000[^\n] %1000[^\n] %d %d %d\n", &titulo, &autor, &editora, &caixa, &ano, &ISBN);
setbuf(stdin,NULL);
for(int i=0; i<120; i++)printf ("*");
printf("\nTitulo: %s\n \nAutor: %s\n \nEditora: %s\n \nCaixa: %d\n \nAno: %d\n \nISBN: %d\n\n", titulo, editora, autor, caixa, ano, ISBN);
}
FecharArquivo(arquivo);
}
void ListarRevista(){
FILE *arquivo;
char titulo[1000];
char autor[1000];
char editora[1000];
int caixa;
int ano;
int ISBN;
arquivo = AbreArquivo('l',"revistas.txt");
printf("\t\t\t\t\t\tListando Revistas....\n\n");
while(!feof(arquivo)){
fscanf(arquivo,"%70[^\n] %70[^\n] %70[^\n] %d %d %d\n", &titulo, &autor, &editora, &caixa, &ano, &ISBN);
setbuf(stdin,NULL);
for(int i=0; i<120; i++)printf ("*");
printf("\nTitulo: %s\n \nAutor: %s\n \nEditora: %s\n \nCaixa: %d\n \nAno: %d\n \nISBN: %d\n\n", titulo,editora ,autor , caixa, ano, ISBN);
}
FecharArquivo(arquivo);
}
int main(){
char titulo[1000];
char autor[1000];
char editora[1000];
int caixa;
int ano;
int ISBN;
int opcao;
int opcao2;
int voltar;
topo:
do{
menu();
printf("\nDigite uma opcao: ");
scanf("%d", &opcao);
setbuf(stdin,NULL);
system("cls");
if (opcao == 1 ){
printf("\t\t\t\t\t\tOBS:NAO USAR ACENTOS\n");
printf("\nDigite 1 para livros ou 2 para revistas: ");
scanf("%d", &opcao2);
system("cls");
}else{
goto listagem;
}
Cad:
switch(opcao2){
case 1:
printf("\t\t\t\t\t\tCadastrando Livros...\n\n");
printf("\nDigite o titulo: ");
setbuf(stdin,NULL);
fgets(titulo, 1000, stdin);
printf("\nDigite o autor: ");
setbuf(stdin,NULL);
fgets(autor,1000, stdin);
printf("\nDigite o editora: ");
setbuf(stdin,NULL);
fgets(editora, 1000, stdin);
printf("\nDigite a caixa: ");
scanf("%d", &caixa);
printf("\nDigite o ano: ");
scanf("%d", &ano);
printf("\nDigite o ISBN: ");
scanf("%d", &ISBN);
Cadastra(titulo, autor, editora, caixa, ano, ISBN);
printf("\n Digite 1 para continuar cadastrando e 2 para voltar ao menu: ");
scanf("%d", &voltar);
if(voltar==2){
system("cls");
goto topo;
}else{
system("cls");
goto Cad;
}
system("cls");
break;
case 2:
printf("\t\t\t\t\t\tCadastrando Revistas...\n\n");
printf("\nDigite o titulo: ");
setbuf(stdin,NULL);
fgets(titulo, 100, stdin);
printf("\nDigite o autor: ");
setbuf(stdin,NULL);
fgets(autor,70, stdin);
printf("\nDigite o editora: ");
setbuf(stdin,NULL);
fgets(editora, 70, stdin);
printf("\nDigite a caixa: ");
scanf("%d", &caixa);
printf("\nDigite o ano: ");
scanf("%d", &ano);
printf("\nDigite o ISBN: ");
scanf("%d", &ISBN);
CadastraRevista(titulo, autor, editora, caixa, ano, ISBN);
printf("\n Digite 1 para continuar cadastrando e 2 para voltar ao menu: ");
scanf("%d", &voltar);
if(voltar==2){
system("cls");
goto topo;
}else{
system("cls");
goto Cad;
}
system("cls");
break;
}
}while(opcao!=0);
listagem:
switch(opcao){
case 2:
Listar();
system("pause");
system("cls");
goto topo;
break;
case 3:
ListarRevista();
system("pause");
system("cls");
goto topo;
break;
case 4:
printf("Opcao nao funcional!\n\n");
system("pause");
system("cls");
goto topo;
case 0:
printf("Finalizando......\n\n");
system("pause");
exit(0);
default:
printf("Erro ");
system("pause");
system("cls");
goto topo;
}
return 0;
}
I refuse to analyze a program that uses
goto
.– anonimo