Posts Tagged "Arquivos"

Arquivos em C

Obs: Esse post será "revisitado" em breve.

Porque usar arquivos?
- Armazenar de maneira persistente as informações
- Armazenar uma grande quantidade de informações

Tipos de Arquivos:
- Texto
- Binário

Características dos arquivos Texto
- Arquivos seqüenciais
- Arquivos podem ser editados em qualquer editor
- Sua leitura é seqüencia pois deve ser feita do inicio ao fim

Características dos arquivos Binários
- Feita internamente pelo programa que gerou, através de uma seqüencia de bits
- O acesso pode ser feito de forma não seqüencial (randômica)

Como trabalhar com os arquivos em C
- Será necessário utilizar um "tipo" novo de variável, chamado FILE (stdio.h)
- Abrir o arquivo
- Trabalhar com o arquivo (ler/gravar)
- Fechar o arquivo

Um pequeno exemplo de escrita em arquivo texto

#include <stdio.h>

int main (int argc, char * argv[]) {
	// cria uma variavel que aponta para o arquivo
	FILE *arq;
	// abre o arquivo *função fopen*, retorna o endereço do arquivo para a variavel arq
	// Modo de abertura -> W
	arq = fopen("arquivo.txt","w");
	// utiliza a função fprintf, que é como a printf, porem dando saida para um arquivo
	fprintf(arq,"Esse é meu primeiro arquivo!\n");
	// fechando o arquivo
	fclose(arq);

	return 0;
}

Um pequeno exemplo de leitura em arquivo texto

#include <stdio.h>

int main (int argc, char * argv[]) {
	char c;
	// cria uma variavel que aponta para o arquivo
	FILE *arq;
	// abre o arquivo *função fopen*, retorna o endereço do arquivo para a variavel arq
	// modo de abertura -> R
	arq = fopen("arquivo.txt","r");
	// Pega caracter a caracter (com a funcao fgetc) joga na variavel c e depois imprime
	c = fgetc(arq);
	while (c != EOF) {
		printf("%c", c);
		c = fgetc(arq);
	}

	// fechando o arquivo
	fclose(arq);

	return 0;
}

 

Funções

FILE * fopen ( const char * filename, const char * mode );

[link]

Abre um arquivo.

Parâmetros:

filename

    Nome do arquivo

mode

    modo de abertura do arquivo:

    Modos de abertura

    r    Abre o arquivo para leitura. O arquivo precisa existir

    w    Abre um arquivo em branco para escrita. Se existir um arquivo com o mesmo nome ele será sobrescrito por um arquivo em branco.

    a    Abre um arquivo para "atualização". Operações de escrita serão adicionadas no final do arquivo. Se o arquivo não existir, será criado.

    r+    Abre o arquivo para leitura e escrita.

    w+    Cria um arquivo vazio para leitura e escrita.Se existir um arquivo com o mesmo nome ele será sobrescrito por um arquivo em branco.

    a+    Abre um arquivo para leitura e "atualização". Todas as operações de escrita serão feitas no final do arquivo. Se o arquivo não existir, será criado.

    OBS: Esses modos de abertura de arquivo são para arquivos textos, porém para proceder a operação em arquivos binários, basta acrescentar a letra b, ficando (rb, wb, ab, rb+, wb+, ab+) (pode-se usar também r+b, w+b, a+b, tendo o mesmo efeito)

Retorno:

    Se for bem sucedido, então retorna o ponteiro para o arquivo

    Se não, retorna um ponteiro nullo (NULL)

fprintf

int fprintf ( FILE * stream, const char * format, ... );

[link]

Escreve em um arquivo

Parâmetros

stream

    Ponteiro para o arquivo

format

    Idem as formatações do comando printf (%c %d …)

Argumentos adicionais

    Dependendo dos parâmetros de formatação da string, é necessário informar as variáveis que irão preencher as informações

Retorno

    Se OK, retorna o numero total de caracteres escritos

    Se falha, um numero negativo é retornado

fclose

int fclose ( FILE * stream ); 

[link]

Fecha o arquivo

Parâmetros

stream

    Ponteiro para o arquivo que será fechado

Retorno

    Se OK, o arquivo é fechado e o valor 0 é retornado.

    Se falha, EOF é retornado