Bom, fiz um codigo que registra livros, editora, numero de paginas e outros dados. O objetivo do exercicio é montar uma estrutura para inserir os dados e depois ver o total do número de páginas e fazer a média destas. Isso eu já fiz, foi fácil, o problema ocorreu quando fui tentar exibir o resultado da seguinte maneira:
printf("O livro \"%s\" possui %d paginas.\n", proc.nome, proc.paginas);
*postarei o código mais abaixo*
O meu problema ocorre no momento de pedir para o usuário inserir o nome do livro.
Primeiro eu tentei fazer com scanf("%s", &proc.nome), e dessa maneira ele funciona numa boa quando escrevo uma única palavra. Entretanto, quando uso espaços ele buga.
Então tentei usar gets usando uma variavel char e copiando para a estrutura, porém após a primeira passagem do laço ela também buga pulando a primeira rotina.
Segue o código levemente alterado para entenderem melhor.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct livro{
char nome[100];
char editora[100];
int paginas;
};
int main(){
struct livro proc[5];
int i, ct = 0, soma = 0;
float media;
char str1[100], str2[100];
for (i = 0; i < 5; i++){
printf("\nDigite o nome do livro: ");
gets(str1);
strcpy (proc[i].nome, str1);
printf("Digite o nome da editora: ");
gets(str2);
strcpy (proc[i].editora, str2);
printf("Digite o numero de paginas: ");
scanf("%d", &proc[i].paginas);
ct++;
soma += proc[i].paginas;
}
media = soma / ct;
printf("\n");
for (i = 0; i < 5; i++){
printf("O livro \"%s\" possui %d paginas.\n", proc[i].nome, proc[i].paginas);
}
printf("\n\nO total de paginas dos %d livros é: %d", ct, soma);
printf("\nPortanto a media de paginas dos livros é:%.2f", media);
printf("\n\n*Fim*\n\n");
system ("Pause");
return 0;
}
Pergunta
Priest
Meu primeiro post! :]
Bom, fiz um codigo que registra livros, editora, numero de paginas e outros dados. O objetivo do exercicio é montar uma estrutura para inserir os dados e depois ver o total do número de páginas e fazer a média destas. Isso eu já fiz, foi fácil, o problema ocorreu quando fui tentar exibir o resultado da seguinte maneira:
printf("O livro \"%s\" possui %d paginas.\n", proc.nome, proc.paginas);
*postarei o código mais abaixo*
O meu problema ocorre no momento de pedir para o usuário inserir o nome do livro.
Primeiro eu tentei fazer com scanf("%s", &proc.nome), e dessa maneira ele funciona numa boa quando escrevo uma única palavra. Entretanto, quando uso espaços ele buga.
Então tentei usar gets usando uma variavel char e copiando para a estrutura, porém após a primeira passagem do laço ela também buga pulando a primeira rotina.
Segue o código levemente alterado para entenderem melhor.
Alguém poderia me dar uma luz com essa dúvida?
Agradeço desde já, abraços.
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.