Ir ao conteúdo
  • Cadastre-se
Alexandre Prezzi

Organização de arquivos

Recommended Posts

Estou com um problema em trabalhar com arquivos em C ...

Tenho um arquivo com alguns registros e estão da seguinte forma (em anexo) (reduzi o tamanho do arquivo para facilitar)

 

Preciso primeiramente ordenar esse arquivo (baseando-se pelos primeiros 7 campos ), ja tentei de diversas formas
mas ate agora sem resultado

Gostaria que alguem me ajudasse com esse caso.

 

Segue o codigo do q tenho feito ate então

 

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

FILE *arq;
  char Linha[100];
  char *result;
  int i;


void ler(){

  //clrscr();
  // Abre um arquivo TEXTO para LEITURA
  arq = fopen("arquivo2.txt", "rt");
  if (arq == NULL)  // Se houve erro na abertura
  {
     printf("Problemas na abertura do arquivo\n");
     return;
  }
  i = 1;
  while (!feof(arq))
  {
    // Lê uma linha (inclusive com o '\n')
      result = fgets(Linha, 100, arq);  // o 'fgets' lê até 99 caracteres ou até o '\n'
      if (result)  // Se foi possível ler
      //printf("Linha %d : %s",i,Linha);
      printf("%s",Linha);
      i++;
  }
  fclose(arq);
  system("pause");          
}


int pesquisar(){
   arq = fopen("arquivo3.txt", "rt");
   int posicaoAtual = ftell(arq);
    //guarda tamanho do arquivo
    long tamanho;
    // calcula o tamanho
    fseek(arq, 0, SEEK_END);
    tamanho = ftell(arq);
    // recupera o estado antigo do arquivo
    fseek(arq, posicaoAtual, SEEK_SET);
            
    int inicio = 0 ;
    int fim = tamanho;
    int meio = ((inicio+fim)/2)+1;
    printf("Inicio %d \n", inicio);
    printf("Fim %d \n", fim);
    printf("Meio %d \n", meio);
    fseek(arq, meio, SEEK_SET);
    result = fgets(Linha, 88, arq); 
    if (result)  // Se foi possível ler printf("Linha %d : %s",i,Linha);
      printf("%s",Linha);
    

   system("pause");
  
}
int ordenar(){
 arq = fopen("arquivo2.txt", "rt");
 i = 1;
  while (!feof(arq))
  {
    // Lê uma linha (inclusive com o '\n')
      result = fgets(Linha, 100, arq);  // o 'fgets' lê até 99 caracteres ou até o '\n'
      if (result)  // Se foi possível ler
      //printf("Linha %d : %s",i,Linha);
      printf("%s",Linha);
      i++;
  }

  system("pause");     
}    

    

int menu() {
    int opcao = 0;
    //printf("%d", sizeof(int)+sizeof(int)+sizeof(float)+sizeof(char[40]));
    printf("\n-------------------------------------------------------------");
    printf("\nAplicação manipulação arquivos em C para funcionarios !!     ");
    printf("\n-------------------------------------------------------------");
    printf("\n1 - Mostra arquivo ----");
    printf("\n2 - Pesquisar ---");
    printf("\n3 - Ordenar ---");
    printf("\n0 - Encerrar Aplicação --------------------------------------");
    printf("\nInforme a opção desejada -----------------------------------:");
    scanf("%d", &opcao);
    return opcao;
}

int main(){
   int opcao = menu();
   switch(opcao){
   case 1:
      ler();
      break;
      
   case 2: 
        pesquisar();
        break;

   case 3: 
       ordenar();
       break;        
    default:
        break;
   } 
}
 

arquivo2.txt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se posso ajudar, o arquivo não é possivel baixar, ta dando problemas.


Se ao que você se refere com campos são variáveis, você deveria usar arquivos index.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×