• Nenhum resultado encontrado

Exemplos

No documento Programação C (páginas 54-64)

13 Gravação e Leitura em Arquivos Texto e Binário

13.2 Exemplos

// Cria arquivo "teste.txt" e escreve o caracter "a" #include <iostream>

#include <stdio.h> using namespace std; main(){

// Cria ponteiro do tipo arquivo (FILE) FILE *fp;

char ch = 'a';

// Abre ou cria o arquivo "teste.txt" para gravação. if ((fp = fopen("teste.txt", "w")) == NULL){

// Caso não seja possível, exibe

cout << "Nao foi possivel abrir o arquivo \n"; // Encerra a execução

exit(1); }

// Escreve o caracter no arquivo putc(ch , fp); // Fecha o arquivo fclose(fp); } Arquivo texte.txt: a

Programação C++ professorgilbertoquirgodesouza@gmail.com Pág. 52 // Abre o arquivo "teste.txt", le o caracter e exibe na tela

#include <iostream> #include <stdio.h> using namespace std; main(){

// Cria ponteiro do tipo arquivo (FILE) FILE *fp;

char ch;

// Abre o arquivo "teste.txt" para leitura. if ((fp = fopen("teste.txt", "r")) == NULL){

// Caso não seja possível, exibe

cout << "Nao foi possivel abrir o arquivo \n"; // Encerra a execução

exit(1); }

// Le o caracter no arquivo e atribui a ch ch = getc(fp);

// Exibe o caracter lido cout << ch; // Fecha o arquivo fclose(fp); } Resultado: a

Programação C++ professorgilbertoquirgodesouza@gmail.com Pág. 53 // Abre o arquivo "teste.txt" e acrescenta o caracter "b"

#include <iostream> #include <stdio.h> using namespace std; main(){

// Cria ponteiro do tipo arquivo (FILE) FILE *fp;

char ch = 'b';

// Abre o arquivo "teste.txt" para acrescimo. if ((fp = fopen("teste.txt", "a")) == NULL){

// Caso não seja possível, exibe

cout << "Nao foi possivel abrir o arquivo \n"; // Encerra a execução

exit(1); }

// Escreve o caracter no arquivo putc(ch , fp); // Fecha o arquivo fclose(fp); } Arquivo texte.txt: ab

Programação C++ professorgilbertoquirgodesouza@gmail.com Pág. 54 Arquivo texte.txt:

abcde

Programa:

// Abre o arquivo "teste.txt", le os caracteres e exibe na tela #include <iostream>

#include <stdio.h> using namespace std; main(){

// Cria ponteiro do tipo arquivo (FILE) FILE *fp;

char ch;

// Abre o arquivo "teste.txt" para leitura. if ((fp = fopen("teste.txt", "r")) == NULL){

// Caso não seja possível, exibe

cout << "Nao foi possivel abrir o arquivo \n"; // Encerra a execução

exit(1); }

// Le o arquivo ate que seja retornado o seu fim while (!feof(fp)) {

// Le o caracter no arquivo e atribui a ch ch = getc(fp);

// Exibe o caracter lido cout << ch; } // Fecha o arquivo fclose(fp); } Resultado: abcde

Programação C++ professorgilbertoquirgodesouza@gmail.com Pág. 55 // Abre o arquivo "teste.txt", escreve "abcde", exibe a primeira e quarta // posicao e apaga o arquivo

#include <iostream> #include <stdio.h> using namespace std; main(){

// Cria ponteiro do tipo arquivo (FILE) FILE *fp;

// Array de char com 5 posicoes preechidas char texto[5] = {'a','b','c','d','e'}; char ch;

// Abre o arquivo "teste.txt" para leitura. if ((fp = fopen("teste.txt", "w+")) == NULL){

// Caso não seja possível, exibe

cout << "Nao foi possivel abrir o arquivo \n"; // Encerra a execução

exit(1); }

// Grava o array texto no arquivo

// Apos isso, o indicador de posição do arquivo fica no final fwrite(&texto, sizeof(texto), 1, fp);

// Recoloca o indicador de posição do arquivo no início do arquivo rewind(fp);

// Le e exibe o caracter do inicio do arquivo ch = getc(fp);

cout << ch;

// Posiciona o indicador na posição 3 do arquivo a partir do início // A primeira posicao é o 0

fseek(fp, 3, SEEK_SET);

// Le e exibe o caracter da posicao atual do arquivo ch = getc(fp); cout << ch; // Apaga o arquivo remove("teste.txt"); // Fecha o arquivo fclose(fp); } Resultado: ad

Programação C++ professorgilbertoquirgodesouza@gmail.com Pág. 56

// Abre o arquivo binario "teste.dat", grava um conteudo, le do arquivo e exibe na tela // Contém verificação na gravação e na leitura do arquivo

#include <iostream> #include <stdio.h> #include <cstring> using namespace std; struct tipo_registro { int codigo; string nome; double valor; }; main(){

// Cria ponteiro do tipo arquivo (FILE) FILE *fp;

// Cria os registros para gravacao e posterior leitura tipo_registro registro_gravado;

tipo_registro registro_lido;

// Cria o arquivo binário "teste.dat" para leitura e/ou gravacao if ((fp = fopen("teste.dat", "wb+")) == NULL){

// Caso não seja possível, exibe

cout << "Nao foi possivel abrir o arquivo \n"; // Encerra a execução

exit(1); }

// Atribui valores ao conteudo de registro_gravado registro_gravado.codigo = 10;

registro_gravado.nome = "Cliente10"; registro_gravado.valor = 100.10;

// Exibe o conteudo do registro_gravado

cout << "--Registro a ser gravado no arquivo teste.dat--" << endl; cout << registro_gravado.codigo << " " << registro_gravado.nome << " " << registro_gravado.valor << endl;

// Grava o registro_gravado no arquivo binário

if (fwrite(&registro_gravado, sizeof(struct tipo_registro), 1, fp)!=1){ // Caso não seja possível, exibe

cout << "Nao foi possivel gravar no arquivo \n"; // Encerra a execução

exit(1); }

// Recoloca o indicador de posição do arquivo no início do arquivo rewind(fp);

// Le o registro_gravado do arquivo binário e armazena no // registro_lido

if (fread(&registro_lido, sizeof(struct tipo_registro), 1, fp)!=1){ // Caso não seja possível, exibe

cout << "Nao foi possivel ler do arquivo \n"; // Encerra a execução

exit(1); }

// Exibe o conteudo do registro_lido

cout << "--Registro lido do arquivo teste.dat--" << endl;

cout << registro_lido.codigo << " " << registro_lido.nome << " " << registro_lido.valor << endl;

// Fecha o arquivo fclose(fp); }

Resultado:

--Registro a ser gravado no arquivo teste.dat-- 10 Cliente10 100.1

Programação C++ professorgilbertoquirgodesouza@gmail.com Pág. 57

10 Cliente10 100.1

Programação C++ professorgilbertoquirgodesouza@gmail.com Pág. 58

// Abre o arquivo binario "teste.dat", grava um array de conteudo, le do arquivo e exibe

// NÃO CONTÉM verificação na gravação e na leitura do arquivo

#include <iostream> #include <stdio.h> #include <cstring> using namespace std; struct tipo_registro { int codigo; string nome; double valor; }; main(){

// Cria ponteiro do tipo arquivo (FILE) FILE *fp;

int tamanho_registro = 3;

// Cria os registros para gravacao e posterior leitura tipo_registro registro_gravado[tamanho_registro]; tipo_registro registro_lido[tamanho_registro];

// Cria o arquivo binário "teste.dat" para leitura e/ou gravacao if ((fp = fopen("teste.dat", "wb+")) == NULL){

// Caso não seja possível, exibe

cout << "Nao foi possivel abrir o arquivo \n"; // Encerra a execução

exit(1); }

// Atribui valores ao conteudo de registro_gravado registro_gravado[0].codigo = 10; registro_gravado[0].nome = "Cliente10"; registro_gravado[0].valor = 100.10; registro_gravado[1].codigo = 11; registro_gravado[1].nome = "Cliente11"; registro_gravado[1].valor = 100.11; registro_gravado[2].codigo = 22; registro_gravado[2].nome = "Cliente22"; registro_gravado[2].valor = 100.22; // Exibe o conteudo do registro_gravado

cout << "--Registro a ser gravado no arquivo teste.dat--" << endl; for (int i=0; i<tamanho_registro; i++){

cout << registro_gravado[i].codigo << " " << registro_gravado[i].nome << " " << registro_gravado[i].valor << endl;

}

// Grava o registro_gravado no arquivo binário

// Apos isso, o indicador de posição do arquivo fica no final for (int i=0; i<tamanho_registro; i++){

fwrite(&registro_gravado[i], sizeof(struct tipo_registro), 1, fp); }

// Recoloca o indicador de posição do arquivo no início do arquivo rewind(fp);

// Le o registro_gravado so arquivo binário e armazena no registro_lido for (int i=0; i<tamanho_registro; i++){

fread(&registro_lido[i], sizeof(struct tipo_registro), 1, fp); }

// Exibe o conteudo do registro_lido

cout << "--Registro lido do arquivo teste.dat--" << endl; for (int i=0; i<tamanho_registro; i++){

cout << registro_lido[i].codigo << " " << registro_lido[i].nome << " " << registro_lido[i].valor << endl;

}

// Fecha o arquivo fclose(fp);

Programação C++ professorgilbertoquirgodesouza@gmail.com Pág. 59

Programação C++ professorgilbertoquirgodesouza@gmail.com Pág. 60 Resultado:

--Registro a ser gravado no arquivo teste.dat-- 10 Cliente10 100.1

11 Cliente11 100.11 22 Cliente22 100.22

--Registro lido do arquivo teste.dat-- 10 Cliente10 100.1

11 Cliente11 100.11 22 Cliente22 100.22

Programação C++ professorgilbertoquirgodesouza@gmail.com Pág. 61

Referências

Cplusplus, Disponível em: http://www.cplusplus.com, último acesso em: 25 ago. 2010.

Deitel, H. M., Deitel, P. J., C++ : Como Programar, Ed. Bookman, 2006.

Horstman, C., Conceitos de Computação com o Essencial de C++, Ed. Bookman, 2005. Farrer, H., Algoritmos Estruturados, Ed. Guanabara, 1989.

No documento Programação C (páginas 54-64)

Documentos relacionados