Editores de Texto   Compiladores   Configuração do X  Discadores Gerenciadores de Janela   Configuração da Acentuação   Aplicativos
Como Ingresar  Colaboradores    Documentação

CÓDIGO FONTE DO PROTÓTIPO DE UM EDITOR DE TEXTO

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)