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 2024

Vídeo: Programação em C/C++ - Aula 18 - Manipulação de arquivos 2024
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

ASVAB Paragraph Comprehension Practice - dummies

ASVAB Paragraph Comprehension Practice - dummies

Um dos subtestes que você verá no ASVAB é o teste de compreensão de parágrafos. Esta parte do ASVAB está voltada para ver se você entende o que você lê. Exemplo de perguntas Parágrafo Tempo de compreensão: 13 minutos para 15 perguntas Instruções: A compreensão de parágrafo é o quarto subtesto no ASVAB. As perguntas são projetadas para ...

ASVAB Preparação: Números positivos e negativos - manequins

ASVAB Preparação: Números positivos e negativos - manequins

Certifique-se de que esteja familiarizado com o trabalho positivo e negativo números para o ASVAB. Os números podem ser positivos ou negativos. Um número positivo é qualquer número maior que zero. Então, 4; 3. 2; 793; 3/4; 1/2; e 430, 932, 843, 784 são todos números positivos. Números inferiores a zero são números negativos. Cada número positivo tem um negativo ...

ASVAB Dicas de compreensão de leitura - manequins

ASVAB Dicas de compreensão de leitura - manequins

As abordagens de compreensão de parágrafo no ASVAB geralmente são bastante curtas. Essas dicas podem ajudá-lo a compreender melhor as passagens de leitura ASVAB e as perguntas que as seguem: Compreenda o que a questão quer de você. Solicita o ponto principal, informações específicas ou uma conclusão baseada na informação apresentada? Releia o parágrafo ...

Escolha dos editores

A diferença entre análises analógicas e digitais - manequins

A diferença entre análises analógicas e digitais - manequins

Toda a eletrônica pode ser dividida em duas grandes categorias: analógico e digital. Um dos exemplos mais comuns da diferença entre dispositivos analógicos e digitais é um relógio. No relógio analógico, o tempo é representado por mãos que giram ao redor de um disco e apontam para uma localização no mostrador que representa ...

O papel dos átomos na eletrônica - dummies

O papel dos átomos na eletrônica - dummies

Os átomos são os blocos de construção básicos de tudo no universo, seja natural ou manmade. Eles são tão pequenos que você encontraria milhões deles em uma única partícula de poeira. A corrente elétrica, às vezes conhecida como eletricidade, é o movimento na mesma direção de partículas microscópicamente pequenas e eletricamente carregadas, chamadas elétrons. Cada átomo contém o ...

Roles de prótons e elétrons - dummies

Roles de prótons e elétrons - dummies

É Uma propriedade de certas partículas, como elétrons, prótons , e quarks (sim, quarks) que descreve como eles interagem uns com os outros. Existem dois tipos diferentes de carga elétrica, um pouco arbitrariamente chamada positiva e negativa (bem como as quatro direções cardinais são chamadas norte, sul, leste e oeste). Em geral, partículas que carregam ...

Escolha dos editores

Acesso 2007 All-In-One For Dummies Cheat Sheet - dummies

Acesso 2007 All-In-One For Dummies Cheat Sheet - dummies

Trabalhando no Access 2007 é mais fácil uma vez que você entenda executar a janela do Access 2007 e usar ferramentas para ajudar a gerenciar seus dados e responder suas perguntas.

Arrumando suas mensagens com o Lotus Notes 6 - manequins

Arrumando suas mensagens com o Lotus Notes 6 - manequins

Antes de enviar uma mensagem de e-mail no Lotus Notes 6, você pode definir Opções de entrega, Opções de segurança e Selos de humor. Use essas dicas de notas para informar o destinatário sobre o quão quente é sua mensagem ou qual é o seu humor; ou solicitar confirmação de entrega, definir o tempo de entrega e muito mais. Depois de terminar de compor o corpo ...

10 Ofícios de teclado do Office 2016 - dummies

10 Ofícios de teclado do Office 2016 - dummies

Um tema comum do Office 2016 é que todos os programas se parecem e funcionam. Depois de aprender a usar o Word, você achará que não é muito mais difícil aprender o Excel ou o PowerPoint porque as guias do Ribbon funcionam de maneiras semelhantes. Ainda melhor, os mesmos comandos de teclas funcionam de forma semelhante em todos os programas do Office 2016. Por ...