Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Wiiliam Oliveira

help!!!!! problema com gets

Recommended Posts

tenho que desnvolver um programa pra trabalho, é sobre cadastros de livros, mas acho que os gets nao estão lendo as informações e as vezes trava o programa, ai vai parte da programação, por favor, me ajudem!!!!!!!

#include <stdlib.h>

#include <stdio.h>

#include <ctype.h>

typedef struct cadlivro{

int codcat, pag; //codigo de catalogação e nº de paginas

char doado, nome[30], autor[30], editora[15];

};

#define TAM 500

int main(){

struct cadlivro exatas;

struct cadlivro humanas;

struct cadlivro biomedicas;

//variaveis auxiliares

int i;

//cadastro de livros

for(i=0;i<1;i++)

{

printf("Cadastro de Livros de Ciencias Exatas\n");

printf("Codigo de Catalogacao: ");

scanf("%d",&exatas.codcat);

printf("Doado(S/N): ");

gets(&exatas.doado);

exatas.doado = toupper(exatas.doado);

printf("Nome da Obra: ");

gets(&exatas.nome);

printf("Nome do autor: ");

gets(&exatas.autor);

printf("Editora do livro: ");

gets(&exatas.editora);

printf("Numero de Paginas: ");

scanf("%d",&exatas.pag);

}

return 0;

}

so lembrando q isso é parte da programação!!!!!!!

Editado por Wiiliam Oliveira

Compartilhar este post


Link para o post
Compartilhar em outros sites

codcat não é um vetor, doado não é um vetor e pag também não é um vetor. Portanto isso está errado:

scanf("%d",&exatas.codcat);

gets(&exatas.doado);

scanf("%d",&exatas.pag);

nome, autor e editora é um vetor e não uma string portanto isso está errado:

gets(&exatas.nome);

gets(&exatas.autor);

gets(&exatas.editora);

Outra coisa com o gets não deve ser usado o &

Tente assim:

#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>

typedef struct cadlivro{
int codcat, pag; //codigo de catalogação e nº de paginas
char doado, nome[30], autor[30], editora[15];
};

#define TAM 500

int main(){

struct cadlivro exatas;
struct cadlivro humanas;
struct cadlivro biomedicas;

//variaveis auxiliares
int i;

//cadastro de livros
for(i=0;i<1;i++)
{
printf("Cadastro de Livros de Ciencias Exatas\n");
printf("Codigo de Catalogacao: ");
scanf("%d",&exatas.codcat);
printf("Doado(S/N): ");
scanf("%c",&exatas.doado);
exatas.doado = toupper(exatas.doado);
printf("Nome da Obra: ");
gets(exatas.nome);
printf("Nome do autor: ");
gets(exatas.autor);
printf("Editora do livro: ");
gets(exatas.editora);
printf("Numero de Paginas: ");
scanf("%d",&exatas.pag);
}
return 0;
}

Se quiser fazer mais de um cadastro, use vetores na declaração das variáveis das fichas.

Assim:

struct cadlivro exatas[10];       // 10 fichas
struct cadlivro humanas[10]; // 10 fichas
struct cadlivro biomedicas[10]; // 10 fichas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola pessoas,

não sei se vai ocorrer esse problema, mas antes de ler uma String com o gets é bom limpar o buffer do teclado... As vezes isso da problema :lol:

fflush(stdin);

Abraços,

Thiago.

Compartilhar este post


Link para o post
Compartilhar em outros sites

as informaçoes sobre cada livro sao:

Titulo, autor, ano de lançamento e numero de registro.

O usuario deve informar atrasves do teclado, a qtidade d livros q dseja cadastras. Alem disso, deve informar atrasves do teclado, com odas as informaçoes de cada livro. Para que os dados nao sejam perdidos, salve-os em um arquivo com o nome livros.txt.

os dados sao salvos da seguntei maneira:

2 //1ª linha do arquivo contem o num d livros cadastrados

Linguagens de Programaçao // 2ª linha do arquivo contem o titulo do 1º livro

Mario Silva // 3ª linha contem o nome do autor do 1º livro

2002 // 4ª linha contem o ano de lançamento do 1] livro

1523 // 5ª linha contem o num d registro do 1º livro

(repete pro segundo assim sucessivmente)

COMO FAÇO???? pliiiix

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×