Cassio Ferrazzo Posted April 26, 2012 Report Share Posted April 26, 2012 (edited) 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 Edited April 26, 2012 by Cassio Ferrazzo Quote Link to comment Share on other sites More sharing options...
0 Dan Oliveira Posted April 26, 2012 Report Share Posted April 26, 2012 (edited) 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. Edited April 26, 2012 by Dan Oliveira Quote Link to comment Share on other sites More sharing options...
0 Cassio Ferrazzo Posted April 26, 2012 Author Report Share Posted April 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? Quote Link to comment Share on other sites More sharing options...
0 Dan Oliveira Posted April 26, 2012 Report Share Posted April 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. Quote Link to comment Share on other sites More sharing options...
0 Cassio Ferrazzo Posted April 27, 2012 Author Report Share Posted April 27, 2012 Valeu, muito obrigado funcionou corretamente Quote Link to comment Share on other sites More sharing options...
Question
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
Edited by Cassio FerrazzoLink to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.