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

Arquivo Randômico -> Arquivo Sequencial


Eduardo de Conto

Pergunta

Olá!

Estou tentando criar um programa em C que a partir de um arquivo bolsista1.cad gere um versão randômica dele usando como "critério de organização" o código do bolsista -1(para ocupar a posição 0 do arquivo). Todavia, o código que elaborei não está funcionando e não estou conseguindo resolver o problema.

Por favor, ajudem-me a corrigir o problema desse código. Segue-o abaixo.

Muito obrigado!

Eduardo F. de Conto.

P.S: Estou usando o compilador DEV-C++.

struct data
{
       int codigo;
       char nome[TEXTO];
       int tipo_bolsa;
       char email [TEXTO];
};

struct modif
{
       int codigo;
       char nome[TEXTO];
       int tipo_bolsa;
       char email [TEXTO];
       int mes_venc;
       int ano_venc;
};
  

void Conv_Randomica (FILE *, FILE *, struct data *, struct modif *, int);
void Listagem1 (FILE *, struct data);
void Listagem2 (FILE *, struct modif);

int main()
{
    struct data buffer;
    struct modif buffer2;
    
    if((arq = fopen("bolsista1.dat", "rb"))==NULL){
      printf("Erro ao abrir o arquivo bolsista1.dat.\n");
      system("PAUSE");
    }
      
    if (!(arq2 = fopen("bolsista2.dat", "wb"))){
       printf("Erro ao criar o arquivo bolsista2.dat.\n");
       system("PAUSE");
    }
     

      else{
       Listagem1(arq, buffer);
       rewind(arq); 
       Conv_Randomica(arq, arq2, &buffer, &buffer2, COD);
       rewind(arq2);
       Listagem2(arq2, buffer2);
      
       fclose(arq2);
       system("PAUSE");
       return 0;
      }
       
      

}

void Conv_Randomica (FILE *arq, FILE *arq2, struct data *buffer, struct modif *buffer2, int cod)
{ 
    int i;
     
    if((arq = fopen("bolsista1.dat", "rb+"))==NULL){
      printf("Erro ao abrir o arquivo bolsista1.dat.\n");
      system("PAUSE");
    }
    
    for(i=1; i < cod; i++){
     while (fread(buffer, sizeof(struct data), 1, arq)){  
         printf("pos:%d", ftell(arq));
         if(buffer -> codigo == i){
            buffer2 -> codigo = buffer ->codigo;
            (buffer2 -> codigo)--;
            strcpy(buffer2 ->nome, buffer -> nome);
            buffer2 -> tipo_bolsa = buffer->tipo_bolsa;
            strcpy(buffer2 -> email, buffer-> email);
            buffer2 -> mes_venc = buffer2 -> ano_venc = 0; 
            fwrite (buffer2, sizeof(buffer2), 1, arq2); 
         } 
      
      }
    }
       
}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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