Ir para conteúdo

POWERED BY:

Arquivado

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

viciado

Arquivos

Recommended Posts

To tentando aprender arquivos, alguem poderia me dar algumas explições tipo:

 

1) Como posso fazer um cadastro (numero, ou nome)

2) Como consultar os dados desse cadastro

 

Na hora do cadastro informar um codigo e depois varias perguntas nesse codigo: nome,cep,tel...

 

 

 

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

A melhor forma é criar uma estrutura (struct) e salvá-la no arquivo.

 

Por exemplo:

 

typedef struct
{
	int id;
	char nome[50];
} DADOS;

Aí você salva a struct diretamente no arquivo, com fwrite

fp = fopen("arquivo", "wb");
fwrite(estrutura, sizeof(DADOS), 1, fp);
fclose(fp);

http://www.cplusplus.com/reference/clibrar...dio/fwrite.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como posso fazer as funções com arquivo para cadastrar vendedor, venda, as duas consultas, e para mostrar o numero do vendedor que mais vendeu em determinado mes e para mostrar o numero do mes com mais vendas

 

 

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

struct vendedor
   {
	   int id;
	   char nome[30];
	   };
struct venda
   {
	   int id;
	   char mes[20];
	   int venda;
	   };
int main()
{
	int n;
  printf(" (1) Cadastrar vendedor \n");
  printf(" (2) Cadastrar venda \n");
  printf(" (3) Consultar vendas de um funcionário em determinado mes \n");
  printf(" (4) Consultar o total das vendas de determinado vendedor \n");
  printf(" (5) Mostrar o numero do vendedor que mais vendeu em determinado mes \n");
  printf(" (6) Mostrar o numero do mes com mais vendas \n");
  printf(" (7) Finalizar programa \n");
  scanf("%d",&n);
  switch(n){
			case 1:
			{
				 
			break;
			}
			case 2:
			{
				 
			break;
			}
			case 3:
			{
				 
			break;
			}
			case 4:
			{
				 
			break;
			}
			case 5:
			{
				 
			break;
			}
			case 6:
			{
				 
			break;
			}
			case 7:
			{
				 exit();
			break;
			}
  system("PAUSE");	
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo depende de como você vai salvar os dados no arquivo.

Não entendi para que serve a variável venda, da struct venda. Ela que relaciona a venda como vendedor?

 

OBS: Não precisa abrir bloco com chaves em cada case. Basta isto:

 

switch (varical)
{
	case 1:
		/* ... */ break;
	case 2: /* ... */ break;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o nome da variável deveria ser "vendedor" ou "id_vendedor". Isso seria bem mais auto-explicativo e de fácil entendimento

 

Como você pensa em salvar os dados? Creio que sera bom ter dois arquivos: uma somente com as estruturas "vendedor" e outro, com "venda". Aí fica mais fácil pesquisar.

Você encontra um IS na struct venda e pesquisa por esse id no arquivo dos vendedores. Ou vice-versa: pesquisa no arquivo de vendas todas as vendas de um determinado vendedor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu posso fazer função que cadastra o vendedor informando o codigo e tem que verificar se esse codigo ja existe e salvar no arquivo os dados do vendedor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma função que le o codigo e percorre a lista de vendedores cadastrados. Se nao existir, cadastra...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

struct vendedor
   {
	   int id;
	   char nome[30];
	   }vend;
struct venda
   {
	   int id;
	   char mes[20];
	   int venda;
	   }venda;
int main()
{
	int n;
  printf(" (1) Cadastrar vendedor \n");
  printf(" (2) Cadastrar venda \n");
  printf(" (3) Consultar vendas de um funcionário em determinado mes \n");
  printf(" (4) Consultar o total das vendas de determinado vendedor \n");
  printf(" (5) Mostrar o numero do vendedor que mais vendeu em determinado mes \n");
  printf(" (6) Mostrar o numero do mes com mais vendas \n");
  printf(" (7) Finalizar programa \n");
  scanf("%d",&n);
  switch(n){
			case 1:
			{
				
			break;
			}
			case 2:
			{
				
			break;
			}
			case 3:
			{
				
			break;
			}
			case 4:
			{
				
			break;
			}
			case 5:
			{
				
			break;
			}
			case 6:
			{
				
			break;
			}
			case 7:
			{

			break;
			}
  system("PAUSE");	
  return 0;
}

void cadastrar_vendedor(){
	 FILE *arquivo;
	 arquivo = fopen("arquivo.txt","wb");
	 printf("Informe o codigo\n");
	 gets(vendedor.id);
	 printf("Nome \n");
	 gets(vendedor.nome);
	 fwrite(&id,sizeof(id),1,arquivo);
	 fwrite(&nome,sizeof(nome),2,arquivo);
	 fclose(arquivo);
}

 

Qual o problema as struct e a função ? Desculpe mais estou apenas aprendendo arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para adicionar dados no fim do arquivo, use o modo "a", não o "w".

 

Você pode salvar a struct diretamente no arquivo:

fwrite(&vendedor, sizeof(struct vend), 1, arquivo);
Seria interessante usar typedef, para não precisar ficar colocando struct vend. Aliás, vend pode confundir com venda. É melhor escolher outro nome; algo auto-explicativo e intuitivo, como vendedor. http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif

 

Não use gets(). Use fgets()

http://www.linhadecodigo.com.br/Dica.aspx?id=1141

 

Novamente: não é necessário abrir blocos em casa "case" do "switch"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como utilizo typedef ?

http://forum.imasters.com.br/public/style_emoticons/default/searchbeforeposting.gif

 

http://www.google.com.br/search?source=ig&...&meta=lr%3D

 

Basta digitar typedef. A primeira página já explica tudo o que você precisa saber

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>

#include <stdlib.h>

 

struct vendedor

{

int id;

char nome[30];

}vend;

struct venda

{

int id;

char mes[20];

int venda;

}venda;

int main()

{

int n;

printf(" (1) Cadastrar vendedor \n");

printf(" (2) Cadastrar venda \n");

printf(" (3) Consultar vendas de um funcionário em determinado mes \n");

printf(" (4) Consultar o total das vendas de determinado vendedor \n");

printf(" (5) Mostrar o numero do vendedor que mais vendeu em determinado mes \n");

printf(" (6) Mostrar o numero do mes com mais vendas \n");

printf(" (7) Finalizar programa \n");

scanf("%d",&n);

switch(n){

case 1:

{

 

break;

}

case 2:

{

 

break;

}

case 3:

{

 

break;

}

case 4:

{

 

break;

}

case 5:

{

 

break;

}

case 6:

{

 

break;

}

case 7:

{

 

break;

}

system("PAUSE");

return 0;

}

 

void cadastrar_vendedor(){

FILE *arquivo;

arquivo = fopen("arquivo.txt","ab");

printf("Informe o codigo\n");

fgets(vend.id);

printf("Nome \n");

gets(vendedor.nome);

fwrite(&vend,sizeof(struct ven),1,arquivo);

fwrite(&nome,sizeof(struct venda),2,arquivo);

fclose(arquivo);

}

void cadastrar_venda(){

FILE *arquivo;

arquivo = fopen("arquivo.txt","ab");

printf("Informe o codigo do vendedor"); /* como posso fazer para verificar se o codigo é de alguem vendedor ou se esta incorreto */

/* E como verificar se ja existe venda cadastrada para o vendedor no mes que ira ser informado *\

Compartilhar este post


Link para o post
Compartilhar em outros sites

struct ven não existe.

 

Novamente:

Use fgets() em vez de gets

Não precisa abrir bloco dentro do case

 

Para verificar se o código existe e se há vendas para o vendedor, percorra o arquivo, lendo estrutura por estrutura e fazendo comparações

Compartilhar este post


Link para o post
Compartilhar em outros sites

fread() retorna o número de itens lidos. LLogo, você pode fazer isto:

 

while ( fread(&estrutura, sizeof(ESTRUTURA), 1, fp) )
{
	if (id_a_ser_buscado == estrutura.id)
		/* vendedor encontrado */
		break;
}

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.