Esclarecimentos:
Fala galera!
Ai esta nosso primeiro codigo-fonte, ele e' muito, muito, muito
simples, ele apenas abre um arquivo que e' especificado na linha de
comando, nem paginacao ele tem, ou seja, se o arquivo for grande ele
so'
vai mostrar o que couber na tela.
No momento podemos usar um pipe para o more, ou outro paginador.
Eu
chamei o programa estupidamente de "edi". POR FAVOR MUDEM ISSO! ;)
Entao, para chamar temos que fazer:
$ edi nome_do_arquivo
Para paginar:
$ edi nome_do_arquivo | more
Para compilar:
$ cc -o edi edi.c
Vamos lah.... O inicio ja' foi dado!
Código:
/*
* Este e' a primeira versao do editor de textos que estamos implementando,
* nesta primeira versao, o usuario chama o editor pela linha
de comando
* (e' claro!) com o nome do arquivo que ele quer ler. Se o arquivo
nao exis
* tir o programa finaliza com erro. Caso o usuario colocar mais
que dois nomes
* na linha de comando ele tambem falha, ou seja, ele so' abre
com:
* $ edi nome_do_arquivo
* OBS: O arquivo tem que estar no formato texto.
* Agora temos que fazer todas as outras implementacoes: abrir
o arquivo para
* gravacao, testar se o arquivo existe ou nao e etc...
* O codigo-fonte esta abaixo, devidamente comentado.
*
* Luiz Fernando N. Capitulino
* E-mail:capitulino@jedi.com.br
*/
/* Como disse, esta primeira versao e' muito simples, usamos somente
a bibli
oteca padrao. */
#include <stdio.h>
/* Aqui esta o prototipo da funcao que "faz tudo". */
int abre_leitura (char nome[]);
/* Comecando... Aqui estao os argumentes recebidos na linha de comando
*/
int main (int argc, char *argv[])
{
/* Testa para ver se o usuario
entrou com os dados corretos, que e'
o nome
do programa e o texto para ser visualizado. */
if (argc != 2)
{
printf("\n\nUse: edi nome_do_arquivo\n\n");
return(0); /* Usei o return(), ou seja, o programa somente
finaliza. Nao quiz "complicar".*/
}
/* Se estiver tudo certo,
o programa chama a funcao abre_leitura.
Que recebe
como argumento o nome do arquivo. */
else
abre_leitura(argv[1]);
return (0);
}
/* Fim da funcao main() */
/* Agora, a parte fundamental. A funcao recebe como parametro uma string.
*/
int abre_leitura (char nome[])
{
FILE *arquivo;
/* O ponteiro para o arquivo. */
char c;
/* O caractere usado para leitura. */
/* Abre o arquivo somente
para leitura, e ja' testa, se der erro,
o programa
imprime a mensagem e termina. */
if (!(arquivo = fopen (nome,
"r")))
{
printf("\n\nErro ao abrir arquivo.\n\n");
return (0);
}
/* Se nao der erro, ele continua,
lendo cada caractere e os colocando
na tela,
ateh chegar o fim do arquivo. Quando isso acontecer, o
programa
fecha o arquivo e finaliza. */
else
while ((c = getc(arquivo)) != EOF)
printf("%c", c);
close(arquivo);
return (0);
}
/* Fim da funcao abre_leitura(), simples nao? */
--
[]'s Capitulino
Paginas sobre Linux:
http://www.megalinux.tsx.org
"Que a forca esteja com voce!"
http://www.vmlinuz.cjb.net
(Mestres jedi)