Buscar

Arquivo de Entrada e Saída em c

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Arquivo de Entrada e Saida 1
🌑
Arquivo de Entrada e Saida
Definição
Entrada e Saida
Em quase todos os sistemas toda entrada e saida é realizada por meio de streams 
(fluxos de bytes) em que recebem e enviam dados para arquivos
Normalmente a nossa entrada é o Teclado e a saida o console na programação 
em C
Outras entradas e saidas podem ser: Um dispositivo ou um arquivo em disco
Arquivo
Para a linguagem C tudo é um arquivo
Existe 3 arquivos que um programa abre automaticamente
Stdin Arquivo de dados da entrada padrão, normalmente é o teclado
stdout Arquivo de dados de saída padrão, normalmente é o console
stderr arquivo de dados da saída padrão para erros, normalmente é o console
Existe dois tipos de arquivos
Arquivo de texto: os caracteres podem ser exibidos na tela e pode ser editado através de um 
editor de texto simples
Arquivos Binários o conteúdo é uma sequência de bits que não podem ser lidos diretamente
Declarando um arquivo de texto
Inicio
Se usa um tipo apontador para arquivo para declarar e manipular
#include <stdi.h>int main()
{ 
 FILE * nomePonteiro; 
 
 return 0;
}
Arquivo de Entrada e Saida 2
Manipulando um arquivo de texto
Funções
fprintf
Variação do printf
Tem que passar um parâmetro que é qual o arquivo de saida para imprimir
Formato
fprintf(arquivo, "algo");
fscanf
variação do scanf
ela le a entrada de um arquivo que precisa ser passado como parâmetro
Formato
fscanf(arquivo, "%[^/n]", &nome)
fopen
Abre o arquivo passando o endereço e o modo
Na passagem do endereço se você só colocar o nome do arquivo ele vai pegar 
o que está na mesma pasta que seu programa em c.
Retorna um ponteiro para o arquivo sistema (tipo file para ser possivel 
trabalhar com o arquivo)
Os modos são
r abre para leitura
r + abre para leitura e escrita - o arquivo já tem que existir
w cria para escrita
w+ cria para escrita e leitura
a abre para escrita no final
a+ abre para escrita no final com leitura
Formato:
FILE * fopen(char endereco[], char modo[]);
fflush
Esvazia o buffer do arquivo passado como parâmetro
Todos os dados mantidos no buffer são escritos no arquivo
Arquivo de Entrada e Saida 3
Quando se usa fprintf, ao invez de escrever no arquivo ele escreve na 
memoria, quando a memoria enche o programa c pega e grava tudo no 
arquivo. Usando-se o fflush não precisa esperar isso.
Quando se usa o stdin, ela apenas esvazia
Formato
int fflush (FILE * arquivo)
fclose
Fecha o arquivo passado como parâmetro
Executa automaticamente fflush
Sempre que terminar de usar o arquivo no programa precisa fechar ele
Formato:
int fclose(FILE * arquivo)
freopen
Abre outro arquivo na stream passada pelo argumento arq, fechando o arquivo 
anteriormente aberto.
Formato:
FILE *freopen(char endereco[], char modo[], FILE * arq)
feof
Verifica se o cursor do arquivo já chego no fim ou não
SIM diferente de zero
NÃO zero
Formato:
int feof(FILE * arq)
Exemplo
#include <stdio.h>#include <stdlib.h> //constantes 
 
#define ENTRADA "entrada.txt"#define SAIDA "saida.txt"
int main()
{ 
 
Arquivo de Entrada e Saida 4
 FILE * entrada = fopen(ENTRADA, "r"); 
 if (entrada == NULL) //isso vai acontecer se o arquivo não existir ou se já estiver ab
erto 
 { 
 printf("Nao foi possivel abrir o arquivo '%s'\n", ENTRADA); 
 return 1; 
 } 
 
 
 FILE * saida = fopen(SAIDA, "w"); 
 if (saida == NULL) //isso acontece quando não tiver espaço 
 { 
 printf("Nao foi possivel abrir o arquivo '%s'\n", SAIDA); 
 return 1; 
 }
 float soma = 0; 
 int lidos = 0; 
 
 printf("Lendo dados do arquivo '%s'...\n", ENTRADA); 
 while( ! feof(entrada) ) //até terminar o arquivo 
 { 
 float valor; 
 if ( fscanf(entrada, "%f", &valor) == 1 ) //é interessante por isso para testar
 os valores que ele leu 
 { 
 lidos++; 
 soma = soma + valor; 
 
 printf("[%d]: %f\n", lidos, valor); 
 } 
 }
 if (lidos > 0) 
 { 
 fprintf(saida, "Lidos: %d valores.\n", lidos); //escrevendo no arquivo de saída 
 fprintf(saida, "Soma: %f\n", soma); //escrevendo no arquivo de saída 
 fprintf(saida, "Media: %f\n", soma / lidos); //escrevendo no arquivo de saída 
 printf("Foram lidos %d valores do arquivo '%s'.\n", lidos, ENTRADA); 
 printf("Arquivo '%s' gerado com sucesso.\n", SAIDA); 
 } 
 else 
 { 
 printf("Nenhum dado foi lido no arquivo '%s'. Arquivo deve estar vazio.", 
 ENTRADA); 
 } 
 
//fechando arquivos 
 
 fclose(entrada); 
 fclose(saida);
}

Outros materiais