Lar Finanças Pessoais C Programação: Como acessar arquivos armazenados em armazenamento aleatório - manequins

C Programação: Como acessar arquivos armazenados em armazenamento aleatório - manequins

Índice:

Vídeo: Programação em C/C++ - Aula 18 - Manipulação de arquivos 2025

Vídeo: Programação em C/C++ - Aula 18 - Manipulação de arquivos 2025
Anonim

O acesso aleatório de arquivos na programação C não tem nada a ver com números aleatórios. Em vez disso, o arquivo pode ser acessado em qualquer ponto aqui, lá e até mesmo. Este tipo de acesso funciona melhor quando o arquivo é pontilhado com registros do mesmo tamanho. A noção de registros traz estruturas, que podem ser facilmente escritas em um arquivo e, em seguida, recuperadas individualmente, seletivamente ou de uma só vez.

Como ler e rebobinar

À medida que seu programa lê dados de um arquivo, ele acompanha a posição de onde os dados são lidos no arquivo. Uma posição do cursor é mantida para que a localização na qual o código esteja lendo ou escrevendo dentro de um arquivo não for perdida.

Quando você abre primeiro um arquivo, a posição do cursor está no início do arquivo, o primeiro byte. Se você ler um registro de 40 bytes na memória, a posição do cursor é de 40 bytes desde o início. Se você ler até o final do arquivo, a posição do cursor mantém esse local também.

Para manter as coisas confusas, a posição do cursor é muitas vezes referida como um ponteiro de arquivo , , mesmo que não seja uma variável de ponteiro ou um tipo de ponteiro de ARQUIVO. É simplesmente a localização dentro de um arquivo onde o próximo byte de dados é lido.

Você pode mexer com a posição do cursor usando várias funções interessantes em C. Dois deles são ftell () e rebobinar (). A função ftell () retorna a posição atual do cursor que está deslocada como um valor int longo. A função rebobinar () move o cursor de volta ao início do arquivo.

O loop while em Tell and Rewind lê nos registros da ligação. arquivo db. Na linha 28, a função ftell () retorna a posição do cursor. Se for maior do que uma entrada (o que significa que a segunda entrada foi lida), a posição do cursor é reiniciada para o início do arquivo pela função rebobinar () na Linha 29.

TELL AND REWIND

#include # incluir #include int main () {struct entry {char actor [32]; ano int; char title [32];}; struct entry bond; ARQUIVO * a007; int count = 0; a007 = fopen ("bond. db", "r"); se (! a007) {puts ("SPECTTER ganha!"); exit (1);} while (fread (& bond, sizeof (struct entry), 1, a007)) {printf ("% st% dt% sn", bond. actor, bond. year, bond. title); se (ftell (a007)> sizeof (entrada struct)) rebobinar (a007); contagem ++; se (count> 10) break;} fclose (a007); return (0);}

Para determinar o deslocamento correto, uma instrução if compara o resultado da função ftell () e do operador sizeof na entrada da estrutura. Tenha em mente que ftell () simplesmente retorna um longo valor int, não um número específico de estruturas.

A contagem de variáveis, declarada e inicializada na Linha 14, faz o controle de quantas vezes o loop while se repete. Se não o fizesse, o programa ficaria interminável. Isso é ruim. Então, quando o valor de contagem é maior que 10, o loop é quebrado e o arquivo fecha e o programa termina.

Exercício 1 : Digite o código-fonte de Tell e Rewind em seu editor. Crie e execute para ver como funcionam as funções ftell () e rebobinar ().

Como encontrar um registro específico

Quando um arquivo contém registros do mesmo tamanho, você pode usar a função fseek () para arrancar qualquer item individual. O formato para fseek () é

fseek (identificador, deslocamento, de onde);

identificador é um identificador de arquivo, um ponteiro FILE que representa um arquivo que está aberto para leitura. offset é o número de bytes do início, fim ou posição atual em um arquivo. E de onde é uma das três constantes: SEEK_SET, SEEK_CUR ou SEEK_END para o início, a posição atual ou o final de um arquivo, respectivamente.

Enquanto seu arquivo contém registros de tamanho constante, você pode usar fseek () para retirar qualquer registro específico, conforme mostrado em Encontrar um registro específico em um arquivo.

ENCONTRE UM GRUPO ESPECÍFICO EM UM ARQUIVO

#include #include #include int main () {struct entry {char actor [32]; ano int; char title [32];}; struct entry bond; ARQUIVO * a007; a007 = fopen ("bond. db", "r"); se (! a007) {puts ("SPECTTER ganha!"); saída (1);} fseek (a007, sizeof (entrada de estrutura) * 1, SEEK_SET); fread (& bond, sizeof (struct entry), 1, a007); printf ("% st% dt% sn", bond. actor, bond. year, bond. title); fclose (a007); return (0);}

O código mostrado em Encontrar um registro específico em um arquivo é novamente bastante semelhante ao código mostrado na Listagem 22-9. A grande adição é a função fseek (), mostrada na Linha 21. Ela define a posição do cursor de modo que a função fread () que segue (consulte a Linha 22) lê em um registro específico localizado dentro do banco de dados.

Na linha 21, a função fseek () examina o arquivo representado pelo identificador a007. O deslocamento é calculado multiplicando o tamanho da estrutura de entrada.

Tal como acontece com uma matriz, multiplicar esse tamanho por 1 produz o segundo registro no arquivo; multiplique o valor por 0 (ou apenas especifique 0 na função) para ler o primeiro registro. A constante SEEK_SET garante que fseek () comece a olhar desde o início do arquivo.

O efeito líquido do código é o segundo registro na ligação. O arquivo db é exibido.

Exercício 2: Digite o código-fonte de Localizar um registro específico em um arquivo. Crie e execute para ver o segundo registro no arquivo.

C Programação: Como acessar arquivos armazenados em armazenamento aleatório - manequins

Escolha dos editores

Noções básicas do arquivo de dados Flashback da Oracle 12c - dummies

Noções básicas do arquivo de dados Flashback da Oracle 12c - dummies

O Flashback Data Archive do oracle 12c é um mecanismo de banco de dados que permite que você para armazenar periodicamente ou indefinidamente todas as versões de linha em uma tabela ao longo da sua vida útil. Você pode então escolher uma hora para ver os dados como existia em um ponto específico. Esteja ciente de que o Flashback Data Archive é um recurso licenciado. ...

Noções básicas de clusters de aplicativos reais do Oracle 12c - manequins

Noções básicas de clusters de aplicativos reais do Oracle 12c - manequins

Se você visitou os sites da Oracle nos últimos 12 anos , você viu o byline de marketing: "Inquebrável. "Essa linha de tag refere-se ao recurso Real Application Clusters (RAC). Claro, muitos elementos estão envolvidos, mas o RAC tem o destaque. O RAC é a solução de clustering de banco de dados Oracle. Em certo sentido, funciona na teoria de que ...

Noções básicas de Redo Log Files no Oracle 12c - dummies

Noções básicas de Redo Log Files no Oracle 12c - dummies

Redo os arquivos de log armazenam as informações do buffer de log no banco de dados Oracle 12c. Eles são escritos pelo Log Writer (LGWR). Mais uma vez, você não pode ler esses arquivos binários sem a ajuda do software de banco de dados. Normalmente, os arquivos de reto de log são nomeados com a extensão. LOG ou. RDO. Pode ser qualquer coisa que você queira, ...

Escolha dos editores

São orgasmos ok durante a gravidez? - Dummies

São orgasmos ok durante a gravidez? - Dummies

As mulheres grávidas não só têm permissão para fazer sexo, mas muitas vezes o desejam. Mas é bom aproveitar a relação sexual com o ponto do orgasmo? Afinal, os orgasmos são nada mais do que contrações - e as pessoas sugeriram que isso poderia desencadear mão-de-obra. Isso é apenas um mito. De fato, grávida ...

Alimentando a Multidão em uma Reunião Familiar - manequins

Alimentando a Multidão em uma Reunião Familiar - manequins

Cozinhando uma refeição para um grande grupo (reunião familiar ou de outra forma ) requer planejamento e resistência. Aqui está um guia útil para quantidades de alimentos e segurança alimentar, e conselhos sobre a organização de uma festa de potluck. Planejando para potlucks A forma mais comum de comestibles de grupo é uma festa de potluck - qual é a maneira mais barata e fácil de ...

Anatomia do Penis humano - dummies

Anatomia do Penis humano - dummies

Sabendo como as funções de um pénis podem fornecer uma visão útil do sexo e do corpo humano - se você quer entender o pénis e a anatomia masculina melhor ou aprender sobre isso pela primeira vez. Basicamente, um pênis é composto de três estruturas, que são feitas de um material esponjoso que pode preencher com sangue: ...

Escolha dos editores

Como lidar com outliers causados ​​por Forças externas - manequins

Como lidar com outliers causados ​​por Forças externas - manequins

Certifique-se de verificar atentamente os outliers antes eles influenciam sua análise preditiva. Os outliers podem distorcer a análise de dados e dados. Por exemplo, qualquer análise estatística feita com dados que deixa outliers no lugar acaba por desviar os meios e variâncias. Os outliers não controlados ou mal interpretados podem levar a conclusões falsas. Diga os seus dados que ...

Como criar um modelo de análise preditiva com regressão R - manequins

Como criar um modelo de análise preditiva com regressão R - manequins

Você deseja criar um preditivo modelo de análise que você pode avaliar usando resultados conhecidos. Para fazer isso, vamos dividir nosso conjunto de dados em dois conjuntos: um para treinar o modelo e outro para testar o modelo. Uma divisão 70/30 entre treinamento e testes de conjuntos de dados será suficiente. As próximas duas linhas de código ...

Como definir objetivos de negócios para um modelo de análise preditiva - dummies

Como definir objetivos de negócios para um modelo de análise preditiva - dummies

Um modelo de análise preditiva visa resolvendo um problema comercial ou realizando um resultado comercial desejado. Esses objetivos comerciais se tornam os objetivos do modelo. Conhecer aqueles garante o valor comercial do modelo que você constrói - o que não deve ser confundido com a precisão do modelo. Hipotéticamente, você pode construir um modelo preciso para ...