Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

thiano9

Cadastro de Biblioteca em C

Recommended Posts

BOA NOITE...........................

ESTOU FAZENDO UM CADASTRO EM C............SOU NOVATO NESSA LINGUAGEM.............O PROBLEMA DESSE CADASTRO É QUE QUANDO A VARIAVEL É O DO TIPO INTEIRO, DA ERRO....

EXEMPLO, TENHO UM CAMPO CHAMADO CODIGO DE LIVRO, QUANDO A PESSOA DIGITA O NUMERO 1, CADASTRA NORMAL.............MAS NA HORA DA BUSCA APARECE UNS 7 NUMEROS......

ISSO TAMBEM ACONTECE NO CAMPO RG E ANO DO LIVRO....

 

ABAIXO O CODIGO FONTE DESSE CADASTRO:

 

#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> void inserir(void); void mostrar(void); int x; struct cadastro { 		 char nome_aluno[40]; 		 char curso[25]; 		 int rg[5]; 		 int codigo[2];	 		 char titulo[30]; 		 char autor[30]; 		 char editora[20]; 		 int ano_livro[2]; }; 		  		 struct cadastro vetor[3];  int num;  int main(void) { 			 for(;  			 { 			 printf("\t\t\t\tCADASTRO DE BIBLIOTECA\n\n"); 			 printf("********************************************************************************\n"); 			 printf("1-Para adicionar dados\n"); 			 printf("2-Para mostrar dados\n"); 			 printf("3-  Sair\n"); 			 scanf("%d",&num); 			 switch(num) 			 { 			 case 1: inserir(); 			 break; 			 case 2: mostrar(); 			 break; 			 case 3: exit(0); 			 default: puts("TENTE NOVAMENTE"); 			 }				 			   } getchar();			} 				 void inserir(void) { 				for(x=0; x<3; x++) 				{ 				fflush(stdin); 				printf("\n\n\nDigite o Nome do aluno: "); 				gets(vetor[x].nome_aluno); 				fflush(stdin); 				printf("Digite o RG: "); 				scanf("%d", vetor[x].rg); 				fflush(stdin); 				printf("Digite o curso: "); 				gets(vetor[x].curso); 				fflush(stdin); 				printf("Digite o Codigo do livro: "); 				scanf("%d", vetor[x].codigo); 				fflush(stdin); 				printf("Digite o Titulo do Livro: "); 				gets(vetor[x].titulo); 				fflush(stdin); 				printf("Digite o nome do Autor: "); 				gets(vetor[x].autor); 				fflush(stdin); 				printf("Digite a Editora: "); 				gets(vetor[x].editora); 				fflush(stdin); 				printf("Digite o ano da publicacao: "); 				scanf("%d", vetor[x].ano_livro); 				fflush(stdin); 				} 				 getche(); } void mostrar(void) { int x; 		 for(x=0; x<3; x++) 		 { 		 printf("\n Nome do Aluno: %s",vetor[x].nome_aluno); 		 printf("\n RG: %d",vetor[x].rg); 		 printf("\n Curso do Aluno: %s",vetor[x].curso);				 printf("\n Codigo do Livro: %d",vetor[x].codigo); 		 printf("\n Titulo: %s",vetor[x].titulo); 		 printf("\n Autor do Livro: %s",vetor[x].autor); 		 printf("\n Editora: %s",vetor[x].editora); 		 printf("\n Ano da Publicacao: %d\n",vetor[x].ano_livro); 		 printf("\n *******************************************************************************"); 		 } 		  }

 

 

VALEU............

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na função Inserir, você esta pegando os valores inteiros com o scanf() sem colocar o & na frente da variavel, entao ele nao esta recebendo o conteudo, mas sim o endereço da variavel. Soh mudei isso aqui no meu e funcionou legal.

void inserir(void) {    for(x=0; x<3; x++)    { 	  fflush(stdin); 	  printf("\n\n\nDigite o Nome do aluno: "); 	  gets(vetor[x].nome_aluno); 	  fflush(stdin);		  printf("Digite o RG: "); 	  scanf("%d", &vetor[x].rg); 	  fflush(stdin); 	  printf("Digite o curso: "); 	  gets(vetor[x].curso); 	  fflush(stdin); 	  printf("Digite o Codigo do livro: "); 	  scanf("%d", &vetor[x].codigo); 	  fflush(stdin); 	  printf("Digite o Titulo do Livro: "); 	  gets(vetor[x].titulo); 	  fflush(stdin); 	  printf("Digite o nome do Autor: "); 	  gets(vetor[x].autor); 	  fflush(stdin); 	  printf("Digite a Editora: "); 	  gets(vetor[x].editora); 	  fflush(stdin); 	  printf("Digite o ano da publicacao: "); 	  scanf("%d", &vetor[x].ano_livro); 	  fflush(stdin);    }    getche();}

Compartilhar este post


Link para o post
Compartilhar em outros sites

FALA MYOU....beleza?????????ENTÃO CARA..........NA HORA DE INSERIR TA BELEZA, MAS NA HORA DE MOSTRAR O CADASTROTA DANDO ERROS NAS VARIAVEIS TIPO INTEIRO...........EXEMPLO, VOCE INSERE O CODIGO 1 E NA HORA DE MOSTRAR , APARECE UNS 7 NUMEROS..........4332451...........ISSO ACONTECE TAMBEM NO RG E ANO DO LIVRO.............VALEU CARA.................

Compartilhar este post


Link para o post
Compartilhar em outros sites

thiano9, seja muito bem vindo ao fórum iMasters! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Você pode, por gentileza, ler as Regras do Fórum iMasters.

 

O título do tópico será editado, conforme essas regras

Sai: DUVIDAS SOBRE CADASTRO DE BIBLIOTECA EM C

Entra: Cadastro de Biblioteca em C

Compartilhar este post


Link para o post
Compartilhar em outros sites

ENTÃO CARA..........NA HORA DE INSERIR TA BELEZA, MAS NA HORA DE MOSTRAR O CADASTROTA DANDO ERROS NAS VARIAVEIS TIPO INTEIRO...........EXEMPLO, VOCE INSERE O CODIGO 1 E NA HORA DE MOSTRAR , APARECE UNS 7 NUMEROS..........4332451...........ISSO ACONTECE TAMBEM NO RG E ANO DO LIVRO.............

O erro está aparecendo porque voce está inserindo errado.- Primeiro: como o amigo disse voce precisa usar o operador & ele indica que voce quer gravar o valor no endereço da variável.
printf("Digite o RG: "); scanf("%d", &vetor[x].rg);
- Segundo: sua struct não está correta.
struct cadastro { 		 char nome_aluno[40]; 		 char curso[25]; 		 int rg[5]; 		 int codigo[2];	 		 char titulo[30]; 		 char autor[30]; 		 char editora[20]; 		 int ano_livro[2]; };
Qual o propósito de colocar int rg[5]?colocando isso voce está criando 5 variáveis inteiras com o nome de:rg[0]rg[1]rg[2]rg[3]rg[4]Então substitua assim:
struct cadastro { 		 char nome_aluno[40]; 		 char curso[25]; 		 int rg; 		 int codigo;	 		 char titulo[30]; 		 char autor[30]; 		 char editora[20]; 		 int ano_livro; };
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

FALA AI...........ENTÃO, NA HORA DE INSERIR TA CERTO, MAS NA HORA DE MOSTRAR ESTA ERRADO...........ELE COMPILA SE NENHUM ERRO.....................VOCE DIGITA INSERE CODIGO 1 E NA HORA DE MOSTRAR APARECE O MESMO ERRO DOS 7 NUMEROS............FALOU............

Compartilhar este post


Link para o post
Compartilhar em outros sites

FALA AI...........ENTÃO, NA HORA DE INSERIR TA CERTO, MAS NA HORA DE MOSTRAR ESTA ERRADO...........ELE COMPILA SE NENHUM ERRO.....................VOCE DIGITA INSERE CODIGO 1 E NA HORA DE MOSTRAR APARECE O MESMO ERRO DOS 7 NUMEROS............FALOU............

Voce pode postar o código que está com erro?aguardo... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce fez as alteações? mesmo q antes de você postar aqui ele estivesse compilando e dando erro apenas na impressão dos dados na tela, nao significa exatamente q o erro era na função mostrar(). Faz as alterações propostas pelo Kandrade ai q vai funciona... E mais uma coisa, seria melhor RG ser um vetor de chars, pelo menos o meu RG é de 10 digitos, um inteiro nao comporta isso n... e ja q nao vai realizar calculos com ele...Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

E AI KANDRADE, AQUI ESTA O CODIGO:{int x; for(x=0; x<3; x++) { printf("\n Nome do Aluno: %s",vetor[x].nome_aluno); printf("\n RG: %s",vetor[x].rg); printf("\n Curso do Aluno: %s",vetor[x].curso); printf("\n Codigo do Livro: %d",&vetor[x].codigo); printf("\n Titulo: %s",vetor[x].titulo); printf("\n Autor do Livro: %s",vetor[x].autor); printf("\n Editora: %s",vetor[x].editora); printf("\n Ano da Publicacao: %d\n",&vetor[x].ano_livro); printf("\n *******************************************************************************"); } }MYHO, FIZ A ALTERAÇÃO DE INT PARA CHAR...............................NÃO PODERIA FAZER ISSO PARA O CODIGO E O ANO DO LIVRO???????????POIS EM AMBOS, NÃO IREI REALIZAR CALCULO ALGUM....................VALEU E ATE MAIS.............

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.