Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
LINGUAGEM DE PROGRAMAÇÃO I Aula 10- Armazenando para preservar - 2a parte Atenção aos Temas Principais dessa Aula Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Conteúdo Programático desta aula Conhecer e usar as funções rewind(), fread(), fwrite(), fgetpos(), fsetpos(), fseek(), ftell(), rename(), remove(), rewind(); Analisar trechos de gravação, leitura e exclusão em arquivos no modo binário. Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Direto ao Assunto Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I TRABALHANDO COM ARQUIVO BINÁRIO Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Funções de leitura e gravação em arquivos binários Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Funções de leitura e gravação em arquivos binários Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Funções de leitura e gravação em arquivos binários Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Funções de leitura e gravação em arquivos binários fread(vetor, sizeof(tipo), tamanho, arqPtr); fread(vetor, sizeof(vetor), 1, arqPtr); fwrite(&var, sizeof(tipo/var), 1, arqPtr); Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I endereço elemento é um ponteiro para qualquer tipo que localiza a posição na MP onde deverá ser armazenado o elemento que foi lido, ou onde será gravado, do/no arquivo externo tamanho número de bytes do que vai ser lido, fornecido pela funçãosizeof (argumento), sendo o argumento o tipo do elemento, ou o nome do elemento quantidade indica o total de itens lidos, onde cada item tem seu tamanho especificado no parâmetrotamanho ptrArq variável ponteiro de arquivo que aponta para o arquivo externo Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Exemplo de um programa com menu, matrizes bidimensionais e arquivo binário Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I #include <stdio.h> #include <stdlib.h> int main() { int op,x,y, flag1=0, flag2=0, flag3=0, flag4=0; float mat[3][5],somaLinha[3], somaColuna[5]; FILE *arq; do { system("cls"); printf("\nMenu Matriz\n"); printf("\n1-le do teclado"); printf("\n2-le do arquivo"); printf("\n3-soma Linha"); printf("\n4-soma Coluna"); printf("\n5-exibe na tela"); printf("\n6-grava no arquivo"); printf("\n7-sai"); printf("\nOpcao: "); scanf("%d",&op);fgetc(stdin); system("cls"); Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I #include <stdio.h> #include <stdlib.h> int main() { int op,x,y, flag1=0, flag3=0, flag4=0; float mat[3][5],somaLinha[3], somaColuna[5]; FILE *arq; do { system("cls"); printf("\nMenu Matriz\n"); printf("\n1-le do teclado"); printf("\n2-le do arquivo"); printf("\n3-soma Linha"); printf("\n4-soma Coluna"); printf("\n5-exibe na tela"); printf("\n6-grava no arquivo"); printf("\n7-sai"); printf("\nOpcao: "); scanf("%d",&op);fgetc(stdin); system("cls"); Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I switch(op) { case 1: for(x=0;x<3;x++) for(y=0;y<5;y++) { printf("\n%d,%d-> ",x+1,y+1); scanf("%f",&mat[x][y]); } flag1=1; flag3=0; flag4=0; break; Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I switch(op) { case 1: for(x=0;x<3;x++) for(y=0;y<5;y++) { printf("\n%d,%d-> ",x+1,y+1); scanf("%f",&mat[x][y]); } flag1=1; flag3=0; flag4=0; break; case 3: if(flag1==1 ) { printf("\nGerando Soma Linha\n"); for(x=0;x<3;x++) { somaLin[x]=0; for(y=0;y<5;y++) somaLin[x]+= mat[x][y]; } printf("\nSoma Linha Gerada\n"); flag3=1; } else printf("\nEntre primeiro com os dados\n"); break; Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Opção 1 Opção 3 Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I case 2: arq=fopen("Matriz","rb"); if(arq==NULL) printf("\nArquivo não abriu \n"); else { printf("\nAguarde. Lendo!\n"); fread(mat,sizeof(mat),1,arq); fread(somaLin,sizeof(somaLin),1,arq); fread(somaCol,sizeof(somaCol),1,arq); fclose(arq); printf("\nAs tres matrizes lidas\n"); flag1=1;flag3=1; flag4=1; } break; Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Opção 2 Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I case 5: if(flag3==1 && flag4==1) { printf("\n\n\t\tMatriz \t\t\t\tSomaLinha\n\n"); for(x=0;x<3;x++) { for(y=0;y<5;y++) printf("%7.3f\t",mat[x][y]); printf("\t%7.3f\n",somaLin[x]); } printf("\n\n"); for(y=0;y<5;y++) printf("%7.3f\t",somaCol[y]); printf("\n\t\tSomaColuna\n"); } else printf("\nEntre primeiro com os dados ou gere as outras matrizes\n"); break; Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Opção 5 Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I case 6: if(flag1==1 && flag3==1 && flag4==1) { arq=fopen("Matriz","wb"); if(arq==NULL) printf("\nArquivo não pode ser lido\n"); else { printf("\nAguarde. Gravando!\n"); fwrite(mat,sizeof(mat),1,arq); fwrite(somaLin,sizeof(somaLin),1,arq); fwrite(somaCol,sizeof(somaCol),1,arq); fclose(arq); printf("\nAs tres matrizes gravadas\n"); } } else printf("\nEntre primeiro com os dados ou gere as outras matrizes\n"); break; Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Opção 6 Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I case 7: printf("\nObrigada por usar meu programa. Autor: \n"); break; default: printf("\nIndisponivel\n"); } /*fecha switch*/ printf("\n\n");system("pause"); }while(op!=7); } case 4: if(flag1==1) { printf("\nGerando Soma Coluna\n"); for(y=0;y<5;y++) { somaCol[y]=0; for(x=0;x<3;x++) somaCol[y]+= mat[x][y]; } printf("\nSoma Coluna Gerada\n"); flag4=1; } else printf("\nEntre primeiro com os dados\n"); break; Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Opção 4 Opção 7 Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função de localização e posicionamento Função que retorna a posição corrente Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função de localização e posicionamento Função que retorna a posição corrente Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função de localização e posicionamento Função que retorna a posição corrente Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função que desloca o indicador de posição de arquivo para uma determinada posição Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função que desloca o indicador de posição de arquivo para uma determinada posição Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I #include <stdio.h> #include <stdlib.h> int main() { float valor; FILE *arq; if((arq=fopen("valores", "ab"))==NULL) printf("\nArquivo nao pode ser aberto\n"); else { printf("\nValor ou 0: "); scanf("%f", &valor); while(valor != 0 ) { fwrite(&valor ,sizeof(valor),1,arq); printf("\nValor ou 0: "); scanf("%f", &valor); } fclose(arq); } printf("\n\n"); system("pause"); } gravarFtellFseek Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I #include <stdio.h> #include <stdlib.h> int main() { float valor, valorT; long int pos1; FILE *arq; if((arq=fopen("valores", "rb+"))==NULL) printf("\nArquivo nao pode ser aberto\n"); else { printf("\nValores armazenados\n"); pos1=ftell(arq);fread(&valor, sizeof(valor),1,arq); while(!feof(arq) ) { printf("\n\nPosicao atual: %ld",pos1 ); printf("\tValor: %7.2f",valor ); pos1=ftell(arq); fread(&valor, sizeof(valor),1,arq); } ler-gravarFtellFseek Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I pos1=4; valorT=1515; fseek(arq,pos1, SEEK_SET); fwrite(&valorT,sizeof(valorT), 1, arq); fseek(arq, pos1, SEEK_SET); fread(&valor, sizeof(valor),1,arq); printf("\n\nApos Alteracao\nPosicao atual: %ld",pos1 ); printf("\tValor: %7.2f",valor ); fclose(arq); } printf("\n\n"); system("pause"); } ler-gravarFtellFseek Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função função seta o indicador de posição do arquivo no início Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função de localização e posicionamento Função função seta o indicador de posição do arquivo no início Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função que obtém a posição atual no fluxo, armazenando-a no objeto apontado por pos Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função que obtém a posição atual no fluxo, armazenando-a no objeto apontado por pos Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função que ajusta o indicador de posição de arquivo para o lugar sinalizado na variável pos Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Função que ajusta o indicador de posição de arquivo para o lugar sinalizado na variável pos Função de localização e posicionamento Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I #include <stdio.h> #include <stdlib.h> int main() { float valor; FILE *arq; if((arq=fopen("valores", "ab"))==NULL) printf("\nArquivo nao pode ser aberto\n"); else { printf("\nValor ou 0: "); scanf("%f", &valor); while(valor != 0 ) { fwrite(&valor ,sizeof(valor),1,arq); printf("\nValor ou 0: "); scanf("%f", &valor); } fclose(arq); } printf("\n\n"); system("pause"); } gravarFgetpos Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I #include <stdio.h> #include <stdlib.h> int main() { float valor, valorT; fpos_t pos1; FILE *arq; if((arq=fopen("valores", "rb+"))==NULL) printf("\nArquivo nao pode ser aberto\n"); else { printf("\nValores armazenados\n"); fgetpos(arq, &pos1);fread(&valor, sizeof(valor),1,arq); while(!feof(arq) ) { printf("\n\nPosicao atual: %ld",pos1 ); printf("\tValor: %9.2f",valor ); fgetpos(arq, &pos1); fread(&valor, sizeof(valor),1,arq); } ler-gravarFgetposFsetpos Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I pos1=4; valorT=1515; fsetpos(arq, &pos1); fwrite(&valorT,sizeof(valorT), 1, arq); fsetpos(arq, &pos1); fread(&valor, sizeof(valor),1,arq); printf("\n\nApos Alteracao\nPosicao atual: %ld",pos1 ); printf("\tValor: %9.2f",valor ); fclose(arq); } printf("\n\n");system("pause"); } ler-gravarFgetposFsetpos Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Outras funções Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Outras funções Função que apaga o arquivo especificado Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Outras funções Função que apaga o arquivo especificado Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Outras funções Função que renomeia o arquivo especificado . Função que apaga o arquivo especificado Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Outras funções Função que renomeia o arquivo especificado . Função que apaga o arquivo especificado Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I O exemplo do funcionário – Trecho Excluir Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I else { printf("\nROTINA DE EXCLUSAO\n"); arq2=fopen("TEMP","wb"); if(arq2==NULL) { printf("\nArquivo nao pode ser aberto\n"); fclose(arq); } else { /*pos1 recebeu valor no trecho de busca acima*/ fsetpos(arq,&pos1); fread(&mat,tam,1,arq); fread(&salario,tam2,1,arq); printf("\nMatricula: %5d\tSalario: R$ %9.2f",mat,salario); printf("\nExclui este registro(s/n): "); fgetc(stdin);scanf("%c",&ch); if(toupper(ch)=='S') { auxI=mat; auxR=salario; rewind(arq); Funcionário Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I fread(&mat,tam,1,arq); while( !feof(arq)) { fread(&salario,tam2,1,arq); if(mat != auxI) { fwrite(&mat,tam,1,arq2); fwrite(&salario, tam2, 1, arq2); } fread(&mat,tam,1,arq); } fclose(arq); fclose(arq2); remove("funcionarios"); rename("TEMP","funcionarios"); } else { fclose(arq); fclose(arq2); } } } Funcionário Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Vamos ao Bate Pronto Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ? Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I R: ftell() 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ? Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I 2) Qual função que grava no arquivo? R: ftell() 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ? Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I R: fwrite() 2) Qual função que grava no arquivo? R: ftell() 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ? Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I 3) Qual a função que lê do arquivo? R: fwrite() 2) Qual função que grava no arquivo? R: ftell() 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ? Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I R: fread() 3) Qual a função que lê do arquivo? R: fwrite() 2) Qual função que grava no arquivo? R: ftell() 1) Qual a função que retorna a posição corrente no fluxo expressa sob o número de bytes a partir do início para arquivo binário ? Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I 4) Qual a função que pode substituir rewind(arqPtr); ? Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I R: fseek(arqPtr, 0, SEEK_END); 4) Qual a função que pode substituir rewind(arqPtr); ? Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I R: fseek(arqPtr, 0, SEEK_END); 5) Com a função fgetpos(), conseguimos obter a posição atual do fluxo e, com função fsetpos(), posicionar o cursor no local desejado. Que outras funções poderiam fazer essas ações ? 4) Qual a função que pode substituir rewind(arqPtr); ? Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I R: ftell() e fseek() R: fseek(arqPtr, 0, SEEK_END); 5) Com a função fgetpos(), conseguimos obter a posição atual do fluxo e, com função fsetpos(), posicionar o cursor no local desejado. Que outras funções poderiam fazer essas ações ? 4) Qual a função que pode substituir rewind(arqPtr); ? Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I Resumindo Armazenando para preservar - 2a parte– Aula 10 LINGUAGEM DE PROGRAMAÇÃO I
Compartilhar