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. #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;
}
Alguém poderia me dar uma luz com essa dúvida? Agradeço desde já, abraços.