Cassio Ferrazzo Postado Abril 26, 2012 Denunciar Share Postado Abril 26, 2012 (editado) Estou com uma dúvida não sei se isso é possivel de ser realizado em C.estou trabalhando com 4 estruturas diferentes.preciso gravar estas estruturas em arquivo.gostaria de fazer uma unica função para realizar a gravação nestes arquivos(cadas estrutura vai gravar em um arquivo diferente)não sei se posso declarar uma função:void GravaArquivo(struct *STR, FILE *pa);passando como parametro a estrutura e o arquivo que vou salvar.é possivel fazer isso desta forma?gostaria de opniões e também algumas idéias caso não seja possivel.Obrigado Editado Abril 26, 2012 por Cassio Ferrazzo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Dan Oliveira Postado Abril 26, 2012 Denunciar Share Postado Abril 26, 2012 (editado) Estou com uma dúvida não sei se isso é possivel de ser realizado em C.estou trabalhando com 4 estruturas diferentes.preciso gravar estas estruturas em arquivo.gostaria de fazer uma unica função para realizar a gravação nestes arquivos(cadas estrutura vai gravar em um arquivo diferente)não sei se posso declarar uma função:void GravaArquivo(struct *STR, FILE *pa);passando como parametro a estrutura e o arquivo que vou salvar.é possivel fazer isso desta forma?gostaria de opniões e também algumas idéias caso não seja possivel.ObrigadoSim é possível, eu colocaria o numero de bytes que tem a estrutura caso seja no modo binário, mas existe a função fwrite que grava bytes em um arquivo binário.size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );ondebuffer é um ponteiro para a variavel que se deseja ler, num_bytes é o numeros de bytes que se deseja gravarcount quantos items do tipo buffer se deseja gravar,fp o arquivo que vai ser gravado.por exemplo você quer gravar um intfwrite(&i, sizeof(int), 1, fp);// grava um int no arquivo passadolembrando que o arquivo esteja aberto em modo binarioai você quer fazer uma função que recebe um ponteiro para sua estrutura e outro para o arquivo.Abre o arquivo com fopen modo binario escritaE grave a estrutura usando fwritemeu protótipo é esse, lembrando que estou sem o compilador void GravaArquivos(void *str, FILE *fp, int num_bytes, const char *arq) //str declarado como void para receber qualquer tipo de dados.implemente-a. Editado Abril 26, 2012 por Dan Oliveira Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cassio Ferrazzo Postado Abril 26, 2012 Autor Denunciar Share Postado Abril 26, 2012 Estou com uma dúvida não sei se isso é possivel de ser realizado em C.estou trabalhando com 4 estruturas diferentes.preciso gravar estas estruturas em arquivo.gostaria de fazer uma unica função para realizar a gravação nestes arquivos(cadas estrutura vai gravar em um arquivo diferente)não sei se posso declarar uma função:void GravaArquivo(struct *STR, FILE *pa);passando como parametro a estrutura e o arquivo que vou salvar.é possivel fazer isso desta forma?gostaria de opniões e também algumas idéias caso não seja possivel.ObrigadoSim é possível, eu colocaria o numero de bytes que tem a estrutura caso seja no modo binário, mas existe a função fwrite que grava bytes em um arquivo binário.unsigned fwrite(void *buffer, int num_bytes, int count, FILE *fp);ondebuffer é um ponteiro para a variavel que se deseja ler, num_bytes é o numeros de bytes que se deseja gravarcount quantos items do tipo buffer se deseja gravar,fp o arquivo que vai ser gravado.por exemplo você quer gravar um intfwrite(&i, sizeof(int), 1, fp);// grava um int no arquivo passadolembrando que o arquivo esteja aberto em modo binarioai você quer fazer uma função que recebe um ponteiro para sua estrutura e outro para o arquivo.Abre o arquivo com fopen modo binario escritaE grave a estrutura usando fwritemeu protótipo é esse, lembrando que estou sem o compilador void GravaArquivos(void *str, FILE *fp, int num_bytes, const char *arq) //str declarado como void para receber qualquer tipo de dados.implemente-a.Certo mas pelo fato de declarar como "void *str" não vai ser necessário fazer um cast dentro da função de gravação em algum momento? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Dan Oliveira Postado Abril 26, 2012 Denunciar Share Postado Abril 26, 2012 Estou com uma dúvida não sei se isso é possivel de ser realizado em C.estou trabalhando com 4 estruturas diferentes.preciso gravar estas estruturas em arquivo.gostaria de fazer uma unica função para realizar a gravação nestes arquivos(cadas estrutura vai gravar em um arquivo diferente)não sei se posso declarar uma função:void GravaArquivo(struct *STR, FILE *pa);passando como parametro a estrutura e o arquivo que vou salvar.é possivel fazer isso desta forma?gostaria de opniões e também algumas idéias caso não seja possivel.ObrigadoSim é possível, eu colocaria o numero de bytes que tem a estrutura caso seja no modo binário, mas existe a função fwrite que grava bytes em um arquivo binário.unsigned fwrite(void *buffer, int num_bytes, int count, FILE *fp);ondebuffer é um ponteiro para a variavel que se deseja ler, num_bytes é o numeros de bytes que se deseja gravarcount quantos items do tipo buffer se deseja gravar,fp o arquivo que vai ser gravado.por exemplo você quer gravar um intfwrite(&i, sizeof(int), 1, fp);// grava um int no arquivo passadolembrando que o arquivo esteja aberto em modo binarioai você quer fazer uma função que recebe um ponteiro para sua estrutura e outro para o arquivo.Abre o arquivo com fopen modo binario escritaE grave a estrutura usando fwritemeu protótipo é esse, lembrando que estou sem o compilador void GravaArquivos(void *str, FILE *fp, int num_bytes, const char *arq) //str declarado como void para receber qualquer tipo de dados.implemente-a.Certo mas pelo fato de declarar como "void *str" não vai ser necessário fazer um cast dentro da função de gravação em algum momento?A função fwrite não precisa cast, por isso o ponteiro não precisa de der especificado o tipo, isso a torna mais generica. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cassio Ferrazzo Postado Abril 27, 2012 Autor Denunciar Share Postado Abril 27, 2012 Valeu, muito obrigado funcionou corretamente Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Cassio Ferrazzo
Estou com uma dúvida não sei se isso é possivel de ser realizado em C.
estou trabalhando com 4 estruturas diferentes.
preciso gravar estas estruturas em arquivo.
gostaria de fazer uma unica função para realizar a gravação nestes arquivos(cadas estrutura vai gravar em um arquivo diferente)
não sei se posso declarar uma função:
void GravaArquivo(struct *STR, FILE *pa);
passando como parametro a estrutura e o arquivo que vou salvar.
é possivel fazer isso desta forma?
gostaria de opniões e também algumas idéias caso não seja possivel.
Obrigado
Editado por Cassio FerrazzoLink para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.