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

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


Derli Junior

Pergunta

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;
}

Editado por kuroi
Adicionar tag CODE e arrumar lay-out do topico
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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 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,4k
×
×
  • Criar Novo...