Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida - Estruturas e parametros para funções em C


Cassio Ferrazzo

Pergunta

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 Ferrazzo
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
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

Sim é 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 );

onde

buffer é um ponteiro para a variavel que se deseja ler,

num_bytes é o numeros de bytes que se deseja gravar

count quantos items do tipo buffer se deseja gravar,

fp o arquivo que vai ser gravado.

por exemplo você quer gravar um int

fwrite(&i, sizeof(int), 1, fp);// grava um int no arquivo passado

lembrando que o arquivo esteja aberto em modo binario

ai 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 escrita

E grave a estrutura usando fwrite

meu 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 por Dan Oliveira
Link para o comentário
Compartilhar em outros sites

  • 0
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

Sim é 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);

onde

buffer é um ponteiro para a variavel que se deseja ler,

num_bytes é o numeros de bytes que se deseja gravar

count quantos items do tipo buffer se deseja gravar,

fp o arquivo que vai ser gravado.

por exemplo você quer gravar um int

fwrite(&i, sizeof(int), 1, fp);// grava um int no arquivo passado

lembrando que o arquivo esteja aberto em modo binario

ai 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 escrita

E grave a estrutura usando fwrite

meu 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?

Link para o comentário
Compartilhar em outros sites

  • 0
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

Sim é 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);

onde

buffer é um ponteiro para a variavel que se deseja ler,

num_bytes é o numeros de bytes que se deseja gravar

count quantos items do tipo buffer se deseja gravar,

fp o arquivo que vai ser gravado.

por exemplo você quer gravar um int

fwrite(&i, sizeof(int), 1, fp);// grava um int no arquivo passado

lembrando que o arquivo esteja aberto em modo binario

ai 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 escrita

E grave a estrutura usando fwrite

meu 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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...