domingo, 16 de dezembro de 2012

Ficheiros: modo de abertura

Leitura ao escrita

* r - abre o ficheiro de texto para leitura, se não existir, fopen, (..) devolve NULL

* w - Cria o ficheiro de texto para escrita. Caso já exista , esvazia-o previamente

* a - Abre o ficheiro de texto, se já existe, ou cria um novo ficheiro, se não existe, para escrita a partir  do fim do ficheiro (append)

Manipulação de ficheiros


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main()
{
FILE *fp1, *fp2;
int contador=0;
char linha[200];
fp1 = fopen("ficheiro1.txt","r");
fp2 = fopen("ficheiro2.txt","w");

while(fgets(linha,200,fp1))
{
contador++;
if(contador%2 == 0)
{
fputs(linha,fp2);
}
}
fclose(fp1);
fclose(fp2);
}


Explicação do código


1º- Definir os apontadores para os ficheiros (fp1 e fp2);

2º- Definir a variável "linha" que vai ser usada para conter o buffer de cada linha do primeiro ficheiro.
Definir um contador, inicializando a zero. Serve para testar se as linhas lidas são pares (quando o contador é um número par) ou se são ímpares;


3º- Abrir os dois ficheiros, um para leitura e outro para escrita:

fp1 = fopen("ficheiro1.txt","r"); // ler no ficheiro


fp2 = fopen("ficheiro2.txt","w"); // escrever no ficheiro


4º- Enquanto ouver linhas para ler, é lida uma linha de cada vez do ficheiro 1

while(fgets(linha,200,fp1))

É incrementado o contador porque foi lida mais uma linha do ficheiro 1.

Se o resto da divisão inteira por 2 for zero, que significa que a linha lida é par, escrevemos essa linha no ficheiro 2


fputs(linha,fp2);

5º- Fechar os ficheiros com o fclose.