viciado 1 Denunciar post Postado Novembro 28, 2008 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
Beraldo 864 Denunciar post Postado Novembro 29, 2008 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
viciado 1 Denunciar post Postado Novembro 29, 2008 fopen Seria para abrir um arquivo? Tenho que criar um antes? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 29, 2008 fopen abre um arquivo O modo "w" cria automaticamente o arquivo, se ele não existir http://www.cplusplus.com/reference/clibrar...tdio/fopen.html Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Novembro 29, 2008 Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Novembro 29, 2008 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
Beraldo 864 Denunciar post Postado Novembro 29, 2008 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
viciado 1 Denunciar post Postado Novembro 29, 2008 A variavel é para cadastrar as vendas informando o codigo do vendedor Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 30, 2008 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
viciado 1 Denunciar post Postado Dezembro 1, 2008 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
_Isis_ 202 Denunciar post Postado Dezembro 1, 2008 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
viciado 1 Denunciar post Postado Dezembro 1, 2008 Eu nao sei cadastrar, como eu posso fazer com arquivo Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Dezembro 1, 2008 #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
Beraldo 864 Denunciar post Postado Dezembro 1, 2008 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
viciado 1 Denunciar post Postado Dezembro 1, 2008 Como utilizo typedef ? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 1, 2008 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
viciado 1 Denunciar post Postado Dezembro 3, 2008 #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
Beraldo 864 Denunciar post Postado Dezembro 4, 2008 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
viciado 1 Denunciar post Postado Dezembro 4, 2008 Como eu posso resolver esses problemas das funções? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 4, 2008 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