Jump to content
Fórum Script Brasil
  • 0

Ajuda Urgente Em Estruturas !


pringles

Question

Pessoal preciso de uma ajuda urgente !!!

Preciso resolver alguns exercícios de C em que o exercício pede para que eu crie um arquivo "cadastro.dat" e coloque algumas informações de cadastro de um paciente de consultório médico neste arquivo, declarando por estruturas.

Alguém tem alguma dica de como alterar e consultar esses dados salvos?

Outra coisa: preciso salvar valores do tipo int no arquivo, e não estou conseguindo.

Eu fiz mais ou menos assim:

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
struct pacientes
{
   char nome[30];
   char endereco[30];
};
void main()
{
   FILE *fp;
   fp=fopen("cadastro.dat","w");
   struct pacientes cadastro;
   printf("Digite o nome do paciente: ");
   gets(cadastro.nome);
   fputs(cadastro.nome,fp);
   fputc('\n',fp);
   printf("Digite o endereco: ");
   gets(cadastro.endereco);
   fputs(cadastro.endereco,fp);
   getch();
   fclose(fp);
}

A estrutura deve ser usada assim mesmo ou tem algum outro jeito mais prático pra eu jogar direto no arquivo, sem precisar usar fputs() e fputc()?

Vocês tem alguma dica pra alteração e consulta de registros?

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Opa!

Você deve usar as funções fread e fwrite para ler e escrever, respectivamente, estruturas em arquivos. Como exemplo, assuma que você possui a seguinte estrutura:

...

struct pessoa {
    char nome[ 30 ];
    int  idade;
};

...
Depois instanciar o objeto FILE tal como você o fez, você deve fazer o seguinte para gravar dados da estrutura no arquivo:
...

struct pessoa p;
int i = 0;

while ( i < 3 ) {
   scanf( "%s", p.nome );
   scanf( "%d", &p.idade );

   fwrite( &p, sizeof( p ), 1, fp );

   i++;
}

...
O primeiro argumento de fwrite é um ponteiro para o objeto da estrutura que contém os dados a serem armazenados, o segundo é o tamanho da estrutura em bytes, o terceiro é o número de elementos a serem inseridos e o último é o ponteiro para o arquivo (isto é, para o seu objeto da estrutura FILE). A função fread é usada de maneira similar:
...

struct pessoa p;
int i = 0;

while ( i < 3 ) {
   fread( &p, sizeof( struct pessoa ), 1, fp );

   printf( "Nome: %s;\nIdade: %d.\n\n", p.nome, p.idade );

   i++;
}

...

Para entender mais sobre o uso desta função e outras de manipulação de arquivos de acesso aleatório, dê uma procurada no Google por exemplo, e dê uma olhada neste link.

Boa sorte!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...