0
I’m doing a job where it’s requested:
The system to be built will need to meet the functional requirements below:
1 - Have your ID (RA-Name-Course) 2 - Have an option menu. 2.1 - Include the registration of works. 2.2 - List all books. 2.3 - List all magazines. 2.4- List works by box.
But my code is with a problem at the time of printing on the screen he "eats" the first letter and only she, for example, say I want to be printed on the screen "Portugal programming", simply the first letter is not printed and the rest is getting "ortugal programming" without P. This is occurring in all the first letters of each line. Here is my code:
#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[70],char editora[70], char autor[70], int caixa, int ano, int ISBN){
FILE *arquivo;
arquivo = AbreArquivo('a', "mapa.txt");
fprintf(arquivo, " \n %s %s\n %s\n \n%d \n%d \n%d", 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', "mapa.txt");
fprintf(arquivo, " %s; %s; %s; %d %d %d\n", titulo, autor, editora, caixa, ano, ISBN);
FecharArquivo(arquivo);
}
void Listar(){
FILE *arquivo;
char titulo[70];
char autor[70];
char editora[70];
int caixa;
int ano;
int ISBN;
arquivo = AbreArquivo('l',"mapa.txt");
while(fgets(titulo, 2, arquivo) != NULL){
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 - Autor: %s - Editora: %s - Caixa: %d - Ano: %d - ISBN: %d\n\n", titulo,editora ,autor , caixa, ano, ISBN);
}
FecharArquivo(arquivo);
}
int main(){
char titulo[70];
char autor[100];
char editora[70];
int caixa;
int ano;
int ISBN;
int opcao;
menu();
do{
printf("\nDigite uma opcao: ");
scanf("%d", &opcao);
system("cls");
switch(opcao){
case 1:
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);
Cadastra(titulo, autor, editora, caixa, ano, ISBN);
system("pause");
break;
case 2:
Listar();
system("pause");
break;
case 3:
Listar();
//system("pause");
break;
case 4:
Listar();
// system("pause");
break;
case 0:
printf("Finalizando......\n");
system("pause");
exit(0);
default:
printf("\n\nOpcao invalida! Tente Novamente!\n\n");
system("pause");
}
}while(opcao!=0);
return 0;
}
Everything indicates that it is a problem with your monitor.
– anonimo