Bem no ultimo post fiquei-me pela leitura de ficheiros caracter-a-caracter e como disse aqui estou com um post de continuação.
Agora vou falar de leitura de Ficheiros de texto com a leitura/escrita formatada, onde usaremos as variáveis fprintf e fscanf.
fprintf - esta variavel escreve dados num ficheiro num formato indicado e só devem ser utilizadas em ficheiros de texto.
Como exemplo de fprintf têm agora um programa básico sobre isto:#include <stdio.h>
int main(int argc, char *argv[]){
FILE *fp;
int a=1;
char b[30]="maria";
float c=2.3;
if(argc == 2){
fp = fopen(argv[1], "w");
fprintf(fp, "%d %s %.1f", a, b, c);
fclose(fp);
}
else
printf("É necessário especificar um nome de ficheiro.\n");
return 0;
}
Neste programa:
- o nome do ficheiro e digitado através da linha de comandos ao compilar por exemplo: "./fprintf dados.txt"
- o programa grava no ficheiro "dados.txt" as palavras: "1 maria 2.3"
- e aberto no modo de escrita ("w")
Agora o fscanf; Com esta variavel, entramos no ficheiro e lê-mos os dados que existem lá.
Por exemplo:#include <stdio.h>
int main(int argc, char *argv[]){
FILE *fp;
int a;
char b[30];
float c;
if((fp = fopen(argv[1], "r"))!=NULL){
fscanf(fp, "%d %s %f", &a, b, &c);
printf("a = %d\n", a);
printf("b = %s\n", b);
printf("c = %.1f\n", c);
fclose(fp);
}
else
printf("O ficheiro especificado não existe!\n");
return 0;
}
Neste programa:
- o ficheiro e aberto através da linha de comandos como o exemplo acima.
- é aberto no modo de leitura ("r").
- Devolve o número de parâmetros que conseguiu ler com sucesso
- Se o ficheiro não existir ou não se encontrar na mesma pasta/localização o programa avisa que o ficheiro e inexistente.
E acaba aqui a minha introdução a manipulação de ficheiros de texto;
segunda-feira, 20 de outubro de 2008
Publicada por Tiago Graça à(s) 01:09 0 comentários
Etiquetas: escrita, ficheiros, fprintf, fscanf, leitura, manipulacao, manipulacao ficheiros
terça-feira, 7 de outubro de 2008
Manipulaçao de ficheiro em linguagem C
Ano novo matéria nova e modulo 7 ;)
Hoje o meu post vai falar sobre Manipulação de ficheiros. Apesar do assunto se dividir entre duas matérias (manipulação de ficheiros de texto e manipulaçao de ficheiros binarios) apenas vou falar do que aprendi que foi manipulaçao de ficheiros de texto.
Ficheiros de texto são aqueles que contêm caracteres perceptíveis para o ser humano (que conseguimos entender). São caracteres da tabela ASCII como algarismos, letras do alfabeto, caracteres de acentuação, pontução entre muitos outros.
Começamos por aprender a abrir e fechar ficheiros atraves de "fopen" e "fclose"
fopen é uma operação que consiste em mandar o programa aceder ao ficheiro, associando-o a uma variável (ficheiro p.ex.);
Para poder abri-lo também é necessário indicar o nome do ficheiro existente na mesma pasta onde esta gravado o programa (“dados.txt” p.ex.) e o modo de abertura que pode ser:
"r" - leitura do ficheiro (permite ler mas nao escrever)
"w" - escrita (permite escrever mas nao ler)
estes foram os mais usados apesar de existirem mais foi os unicos que usamos para ja.
fclose vai eliminar a ligação criada entre o programa e a variável associada ao ficheiro (antes de o fazer verifica que os dados foram gravados).
Para ajudar a perceber clique aqui para fazer o download de um programa basico sobre isto
Depois disto começamos a fazer a leitura de texto no ficheiro atraves da abordagem byte-a-byte ou caracter a caracter. Isto basea-se nas funçoes fgetc e fputc.
fgetc:
http://www.4shared.com/file/65977933/70a028c2/manipulaao_ficheiros.html
Neste programa:
O ficheiro é aberto no modo de leitura mas como nao e perguntado nada parte-se do princípio que o ficheiro existe e ja esta criado com o nome "texto.txt".
Cada caracter lido não é armazenado numa variável, sendo utilizado apenas na condição do ciclo “while”.
No final este programa conta os caracteres escritos no ficheiro "texto.c".
fputc:
A variavel fputc armazena um caracter ou uma cadeia de caracteres num ficheiro.
http://www.4shared.com/file/65978703/970465d/manipulaao_ficheiros2.html
Neste programa:
O ficheiro é aberto no modo de escrita “w”, assim, caso não exista será criado, e caso exista será substituído.
A string é percorrida caracter-a-caracter até ser detectado o seu terminador, ou seja, o caracter ”.
A instrução fputc(texto[i++], fp); primeiro escreve o caracter no ficheiro, e de seguida incrementa o valor de i.
Mais a frente irei publicar outro post com outras noções mas para ja fico.me por aqui
(07-10-08)
Publicada por Tiago Graça à(s) 00:43 0 comentários
Etiquetas: fclose, fopen, manipulacao, manipulacao ficheiros, texto