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

Leitura De Arquivo C


Diego Santana

Pergunta

Boa tarde a todos,

Tenho uma duvida, espero que possam me ajudar.

Seguinte..

Estamos implementando um tradutor assembler em Liguagem C, e as duvidas estão surgindo, e uma delas é na parte de leitura de arquivo.

Criamos um Arquivo TXT no raiz do C: que foi nomeado "Teste.txt", dentro desse Log foi inserido informações, que são Intruções Assembler e label's, e preciso identifica-los.

Por ex: Tudo que estiver dentro de $.......$ é instrução, e tudo que estiver dentro &...............& é label, a estrutura do arquivo é em linha.

Se puderem me ajudar, ficarei agradecido, parece simples, mas devido ao fato de não ter experincia com C, se torna algo complexo.

Esse é a parte do codigo de leitura:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

int main(int argc, char *argv[])
{         
          
          FILE *fimp;
          char mac[100];
          char *result;
          int i;
          
          
          fimp = fopen("c:\\teste.txt","r");
          if(fimp == NULL)
          {
             printf("Arquivo não localizado");
             }
          else
          {
             
              i = 1;
              while(!feof(fimp))
              {
              result = fgets(mac, 100,fimp);
              if(result)
                        printf("mac %d:%s",i,mac);
                        
              i++;
              }
              fclose(fimp);
              }          
              
          system("PAUSE");    
  return 0;
}

Obrigado,

Att..

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Boa tarde a todos,

Tenho uma duvida, espero que possam me ajudar.

Seguinte..

Estamos implementando um tradutor assembler em Liguagem C, e as duvidas estão surgindo, e uma delas é na parte de leitura de arquivo.

Criamos um Arquivo TXT no raiz do C: que foi nomeado "Teste.txt", dentro desse Log foi inserido informações, que são Intruções Assembler e label's, e preciso identifica-los.

Por ex: Tudo que estiver dentro de $.......$ é instrução, e tudo que estiver dentro &...............& é label, a estrutura do arquivo é em linha.

Se puderem me ajudar, ficarei agradecido, parece simples, mas devido ao fato de não ter experincia com C, se torna algo complexo.

Esse é a parte do codigo de leitura:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

int main(int argc, char *argv[])
{         
          
          FILE *fimp;
          char mac[100];
          char *result;
          int i;
          
          
          fimp = fopen("c:\\teste.txt","r");
          if(fimp == NULL)
          {
             printf("Arquivo não localizado");
             }
          else
          {
             
              i = 1;
              while(!feof(fimp))
              {
              result = fgets(mac, 100,fimp);
              if(result)
                        printf("mac %d:%s",i,mac);
                        
              i++;
              }
              fclose(fimp);
              }          
              
          system("PAUSE");    
  return 0;
}
Obrigado, Att..
Conselho: não leia desta maneira ou teu programa estará altamente sujeito a buffer overflows. Vou escrever um pequeno exemplo ilustrativo:
void parse_file(const char *);
char *parse_token(FILE *asm_file, char endtk);

void parse_file(const char *file_path) {
   FILE *asm_file = fopen(file_path, "r");
   int tmp_chr;
   char tmp_c;

   if (!asm_file) {
      perror("Erro ao abrir arquivo");
      exit(1);
      }
   
   while ((tmp_chr = fgetc(asm_file)) != EOF) {
      if (tmp_c > 255 || tmp_c < 0) {
           fprintf(stderr, "Erro ao ler do arquivo");
           exit(2);
           }
      tmp_c = (char) tmp_chr;
      if (tmp_c == '$') {
           printf("Instrucao encontrada: %s\n", parse_token(asm_file, '$'));
           }
      else if (tmp_c == '&') {
           printf("Label encontrado: %s\n", parse_token(asm_file, '&'));
           }
      else {
           continue;
           }
      }
   }

Agora faça a função parse_token, lendo cada caractere até encontrar um igual a endtk, e retornando a seqüência encontrada no trexo em forma de string.

[]'s

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