Jump to content
Fórum Script Brasil
  • 0

É possível abrir *.dat com fopen();


Derli Junior

Question

Olá,

Estou há um ano no curso de Análise de Sistemas na FATEC e terminei meu último modelo de programação em C em julho, vou começar a programar em C++ a partir de estruturas e arquivos com ordenacao e buscas.

Enfim, sou novo no forum e adorei a maneira que as pessoas interagem por aqui...

Tenho a seguinte dúvida... Tenho um algoritmo de abertura de arquivos que eu criei para fazer uma agenda, esse algoritmo leria o conteudo da agenda (agenda.dat )e exibiria na saída padrão.

É aí que surge a minha dúvida, se eu posso fazer leitura de arquivos binários, por que não tentar ler um arquivo DAT que não foi criado por mim???

Meu Antivirus tem uma base de vírus que fica armazenada num arquivo DAT de mais de 120 MB... Eu queria que simplesmente meu programa em C fosse capaz de abri-lo.

Sem mais enrolação, segue o código:

(LEMBRANDO QUE O CODIGO ESTA RESUMIDO E EU APENAS QUERO FAZER A LEITURA DE DADOS)

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

/* 
 * Leitura.c
 * Derli Campos
 * 03/07/2011
 */ 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARQ_CLIENTE "c:\\Documents and Settings\\djunior\\Desktop\\avvscan.dat"  /* nome do arquivo onde os usuarios são cadastrados */
#define TAM 50         /* tamanho máximo do nome de um usuario */

typedef struct /* estrutura que representa os dados de um usuario */
{
 char nome[ TAM + 1 ];
}estrutura;

void listar();

int main()
{
int op; 
 do 
 { 
  /* exibe o menu de opções */ 
  printf("\n\n\tFaca sua escolha:\n\n" ); 
  printf("\t<1> Listar arq DAT\n" );
  printf ( "\t<0> Sair do programa\n" ); 
  printf("\tOpção: " ); 
  scanf ("%d", &op);
  switch (op) 
  { 
   case 1: listar(); /* lista todos os clientes cadastrados */ 
    break; 
   case 0: return;
   default: printf ( "\tOpcao invalida!\n" );
  }
 }while(op < 1 || op > 3);
 return 0;
}



void listar()
{
 FILE * arq;
 int i = 0; 
 if((arq = fopen(ARQ_CLIENTE, "rb")) == NULL)
 {
       fprintf(stderr, "\n\tNao há nenhum cliente cadastrado!\n");
       return;
 }
 estrutura c;

 while (i < sizeof(arq))
 {
     fread(&c, sizeof(estrutura), i,arq);
     printf("%s| \n", c);
     i++;
 }
             printf("\t\\__________________________/\n");

 fclose(arq);
 return;
}

Edited by kuroi
Adicionar tag CODE e arrumar lay-out do topico
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

mas você tem q conhecer a estrutura do arquivo ne. você sabe como esta disposto o conteudo do arquivo?? sabe onde comeca e onde termina cada campo e quais são os tipos de dados de cada um??

a não ser q o desenvolvedor do software tenha disponibilizado as instrucoes para ler o conteudo, você teria q descobrir sozinho.

abra esse arquivo .dat num editor de texto qualquer, ou talvez num editor hexadecimal e analise a estrutura e veja se é possivel identificar algum padrão. mtas vezes ainda, os dados podem estar encriptados, justamente pra evitar q sejam lidos por terceiros, ai já viu ne.

sabendo a estrutura, ai fica facil, é só adapatar o codigo q você postou.

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
      152.2k
    • Total Posts
      652k
×
×
  • Create New...