Buscar

Aula_20 - Arquivos Sequenciais 2

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Aula 20 – Arquivos
Arquivos de acesso seqüencial
*
*
* - 31
Atualização de arquivos seqüenciais
Os dados não podem simplesmente ser gravados ‘por cima’.
Se um determinado registro precisa ser alterado, é preciso, regravar todo o arquivo em 3 etapas
Arquivo a alterar
A
B
1
O arquivo A vai sendo copiado em B até encontrar o registro a alterar
2
Uma versão alterada do registro é copiada em B
3 
O restante do arquivo A é copiado em B
*
*
* - 31
Modo abertura de arquivo
Os arquivo podem ser abertos usando os seguintes argumentos:
ios::app – acrescenta toda saída ao fim de arquivo
ios::ate – abre um arquivo para saída e move-se para o fim do arquivo
ios::in – abre um arquivo para a entrada
ios::out - abre um arquivo para a saída
ios::trunc – descarta o conteúdo do arquivo
ios::binary – abre um arquivo para entrada ou saída binária
*
*
* - 31
Ponteiro de posição de arquivo
Número do próximo byte de arquivo a ser lido
Funções-membro
seekg - seek get (istream)
seekp	 - seek put (ostream)
Posicionam o ponteiro no byte que será lido ou gravado
inArquivoCliente.seekg(0);
outArquivoCliente.seekp(n);
*
*
* - 31
Ponteiro de posição de arquivo
um segundo argumento indica a direção 
ios::beg	- a partir do início (begin)
ios::cur	- a partir da posição 				 corrente (current)
ios::end	- a partir do fim (end)
inArquivoCliente.seekg(n, ios::cur);
outArquivoCliente.seekp(n, ios::end);
*
*
* - 31
Ponteiro de posição de arquivo
funções membro tellg e tellp:
	
	long int posicao;
	posicao = arquivo.tellg();
*
*
* - 31
Exemplo 3
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
int main (){
*
*
* - 31
int main (){
 const int max=80;
 char frase[max];
 char nomeArq[20];
 char continua= 's';
 cout<<"\nDigite o nome do arquivo: ";
 cin.getline(nomeArq,20);
	// abre um arquivo para escrita
	ofstream out(nomeArq, ios::app);
	if( !out ){
	 cout << "O arquivo não pode ser aberto!";
	 exit(1);
	}
*
*
* - 31
 do{
 cout<<"\nDigite uma frase: "<<endl;
 cin.getline(frase,max);
 out<<frase<<endl;
 cout<<"\nContinuar (s=sim n=nao): ";
 }while (getchar()=='s');	 
 // fecha o arquivo
	out.close();
	return 0;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando