Baixe o app para aproveitar ainda mais
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; }
Compartilhar