Programação de Computadores Arquivos Prof. Fabio Henrique N. Abe fabio.henrique.abe@gmail.com 99642-5002 http://www.comp.uems.br/~fhna/
Exercícios 1 de Agora valendo 2,0 dos trabalhos para a P4! Entrega em 26/10 02/11. Sr. Dominguinhos é um apaixonado, pra não dizer viciado, em jogos de dados. O jogo preferido dele consiste em dois competidores jogarem três dados simultaneamente. O jogador que tirar a maior soma de valores, ganha o jogo. O Sr. Dominguinhos acredita que gravando todos os resultados durante um jogo, ele será capaz de jogar melhor. Você ficou responsável de criar um programa que: Armazene todas as jogadas realizadas pelo Sr. Dominguinhos; Armazene se ele ganhou, ou perdeu o jogo. O programa deve, ao final de 10 partidas, mostrar: Todos os dados sorteados nos 10 jogos realizados? Quantos jogos foram ganhos e quantos jogos foram perdidos? Quando o Sr. Dominguinho ganhou, qual a soma dos números? Quando o Sr. Dominguinhos perdeu, qual a soma dos números? Qual foi a soma de valores que deu mais sorte ao Sr. Dominguinhos? Qual foi a soma de valores que deu mais azar ao Sr. Dominguinhos? Qual número que mais apareceu nos dados?
Utiliza o conceito de fluxo de dados. Também chamado de stream. Fluxos de texto: Sequência de caracteres; Final de linha marcada por um terminador (DOS UNIX). Fluxos binários: Sequência de bytes, lidos sem tradução do dispositivo.
- Principais Funções - Função fopen() putc(), fputc() getc(), fgetc() fprintf() sscanf() fscanf() fseek() rewind() feof() ferror() fflush() fread() fwrite() Descrição Abre um arquivo Escreve um caracter em um arquivo Lê um caracter de um arquivo Equivalente a printf(), usando stream Equivalente a scanf(), usando string Equivalente a scanf(), usando stream Posiciona o arquivo em um ponto específico Posiciona o arquivo no início Retorna VERDADE se chegou ao fim do arquivo Verifica a ocorrência de erro Descarrega o buffer associado com o arquivo Leitura de dados no modo binário Escrita de dados no modo binário
- Abrindo um arquivo - Antes de qualquer operação o arquivo precisa ser aberto; É realizado a associação do fluxo com um arquivo. Função utilizada: fopen( ) FILE *fopen (const char *arquivo, const char *modo) arquivo: nome do arquivo a ser manipulado; modo: maneira como o arquivo vai ser aberto; Retorna NULL se o arquivo não puder ser aberto; Ponteiro não deve ser modificado.
- Abrindo um arquivo - Modo Descrição r w a rb wb ab Abre um arquivo texto para leitura Cria um arquivo texto para escrita Adiciona texto ao fim de um arquivo texto Abre um arquivo binário para leitura Abre um arquivo binário para escrita Anexa a um arquivo binário r+ Abre um arquivo texto para leitura/escrita w+ Cria um arquivo texto para leitura/escrita a+ Cria ou anexa a um arquivo texto para leitura/escrita r+b r+b a+b Abre um arquivo binário para leitura/escrita Cria um arquivo binário para leitura/escrita Anexa a um arquivo binário para leitura/escrita
- Abrindo um arquivo -
- Fechando um arquivo - Um arquivo aberto por meio da função fopen( ) deve ser fechado com a função fclose( ).) Protótipo: int fclose (FILE *arq); arq: ponteiro do arquivo a ser fechado Retorna 0 se o arquivo foi fechado com sucesso Importante fechar o arquivo, pois somente assim é garantido a escrita dos dados.
- Lendo um arquivo até o final - A função feof( ) indica que o arquivo chegou ao seu final; Protótipo: int feof(file *arq)
- Exercício 01 - Escreva um programa que faça a geração de 1000 números aleatórios, não repetidos entre 1 e 50.000, e salve cada número em uma linha no arquivo 1k.txt
- Exercício 02 - Usando o arquivo 1k.txt, escreva um programa que faça a leitura do mesmo e mostre: O maior número; O menor número; A média dos valores; Utilize a função feof(); Não utilize vetor.
- Exercício 03 - Crie um programa que faça o preenchimento de um vetor de 1000 posições de números inteiros, entre 0 e 500. O programa deve salvar os números pares no arquivo par.txt e os números ímpares no arquivo ímpar.txt.
Dicas em C - Argumentos em linha de comando - Possbilidade de passar argumentos em linha de comando. int main( int argc, char *argv[ ] ) argc é o número de argumentos passados argv é o vetor de argumentos argv[0] armazena o próprio nome do programa, então argc é no mínimo 1
Dicas em C - Medir o tempo de execução de seu programa - time./programa ou