Informática, perguntado por franciscoesleyloiola, 10 meses atrás

O código está com um problema de que quando eu dou um espaço na hora de cadastrar um autor ou qualquer outra coisa ele grava a informação no próximo scanf e na hora da leitura do arquivo txt as palavras ficam em lugares diferentes, já pesquisei, estudei, vi vídeo aulas e não consegui encontrar algo que resolvesse. Peço ajuda a vocês para que consiga realizar essa atividade pois eu não consigo encontrar uma maneira de resolver isso: O sistema a ser construído necessitará atender aos requisitos funcionais abaixo: 2.0 - Possuir um menu de opção. 2.1 - Incluir o registro das obras, tais como (título da obra, edição, nome do autor, editora, isbn, quantidade de exemplares, caixa onde a obra está armazenada e ano). 2.2 - Listar todos os livros. 2.3 - Listar todas as revistas. 2.4- Listar as obras por caixa. #include #include 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\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[100][100],char editora[100][100], char autor[100][100], 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 CadastraRevista(char titulo[100],char editora[100], char autor[100], 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][70]; char autor[70][70]; char editora[70][70]; int caixa; int ano; int ISBN; arquivo = AbreArquivo('l',"mapa.txt"); while(!feof(arquivo)){ fscanf(arquivo,"%s %s %s %d %d %d ", &titulo, &autor, &editora, &caixa, &ano, &ISBN); setbuf(stdin,NULL); for(int i=0; i<70; i++)printf ("*"); printf("\nTitulo: %s - Autor: %s - Editora: %s - Caixa: %d - Ano: %d - ISBN: %d\n\n", titulo, autor, editora, caixa, ano, ISBN); } FecharArquivo(arquivo); } int main(){ char titulo[100][100]; char autor[100][100]; char editora[100][100]; int caixa; int ano; int ISBN; int opcao; identificacao(); menu(); do{ printf("\nDigite uma opcao: "); scanf("%d", &opcao); system("cls"); switch(opcao){ case 1: printf("\nDigite o titulo: "); setbuf(stdin,NULL); fgets("%[^\n]s",titulo); printf("\nDigite o autor: "); setbuf(stdin,NULL); gets(autor); printf("\nDigite o editora: "); setbuf(stdin,NULL); gets(editora); 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: printf("\n\nFinalizando...\n\n"); system("pause"); exit(0); break; default: printf("\n\nOpcao invalida! Tente Novamente!\n\n"); system("pause"); } }while(opcao!=3); return 0; }

Soluções para a tarefa

Respondido por nataschaaps123
0

Eu não entendi foi nada desse conteúdo ♡


franciscoesleyloiola: Ficou bem bagunçado eu sei, irei arrumar o código certinho. Desculpa
Respondido por galeazzifelipe
0

Resposta:n entendi foi nd

Explicação:so sei q nd sei

Perguntas interessantes