Buscar

Aula 15 - Arquivos Binários

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

*
Arquivos
*
Estruturas de dados armazenadas fora da memória principal do computador
Memória secundária (HD, disquete etc);
Maior quantidade de informação 
Uso futuro (persistência)
Nome e caminho para identificação
Arquivos
*
Arquivos Binários
Composto por uma sequência de bits, da mesma forma como fica na memória principal (ex. programa executável).
Arquivos
*
Arquivos Binários
Orientado a bytes e não caracteres
Abertura de um arquivo
 ponteiroarq = fopen(nomeexterno, modo);
 Modos de Abertura:
b : Indica arquivo binário.
Combinando: rb,wb ,ab,rb+, wb+
*
Comandos de escrita:
	size_t fwrite(const void *ptr, size_t 	size, size_t count, FILE *f ); 
Escreve em f count elementos, cada um com tamanho size em bytes, do bloco de memória apontado por prt. Retorna número de elementos escritos.
Comandos de leitura:
	size_t fread(void *ptr, size_t size, 	size_t count, FILE * f); 
Lê de f , count elementos, cada um com tamanho size em bytes, para o bloco de memória apontado por prt. Retorna número de elementos lidos.
Arquivos Binários
*
main()
{
 FILE *arq ;
 int vet[] = { 10 , 20, 30 };
 int i;
 arq = fopen ("dados.bin", "wb");
 fwrite (vet, sizeof(int) , 3, arq);
 fclose (arq);
 
 arq = fopen ("dados.bin", "rb" );
 fread (vet, sizeof(int) , 3, arq);
 fclose( arq ) ;
 for ( i=0; i<3; i++)
 { 
 printf( "%d ", vet[i]);
 }
}
Arquivos Binários
*
typedef struct { 
 int numero;
 char nome[20];
 float nota;
 } aluno;
int main()
{
 FILE *classe;
 aluno a[10], b[10];
 int i;
 classe = fopen("alunos.dat", "ab+");
 for(i = 0; i < 10; i++)
 {
 		printf("\nDigite o numero do aluno a ser incluido ");
		scanf("%d",&a[i].numero);
 		printf("\nDigite o nome do aluno a ser incluido ");
 		scanf("%s",a[i].nome); 
 		printf("\nDigite a nota do aluno ");
 		scanf("%f",&a[i].nota);
 }
*
fwrite(a, sizeof(aluno), 10, classe);
fclose(classe);
classe = fopen("alunos.dat", "ab+");
fread (b, sizeof(aluno), 10, classe);
for(i = 0; i < 10; i++)
{
 		printf("\nAluno %d:\n", i + 1); 
		printf("Numero do aluno: %d", b[i].numero);
		printf("\nNome do aluno: %s", b[i].nome);
 		printf("\nNota do aluno: %f ", b[i].nota);
 }
 fclose(classe);
}
*
*
*
*
*
*

Teste o Premium para desbloquear

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

Outros materiais