Usando a biblioteca readline

Publicado por Fabio Junior Sabai 08/12/2004

[ Hits: 10.114 ]

Download teste.c




A biblioteca readline, a mesma usada pelo bash, serve, como o nome diz, para ler linhas. Ela porém faz mais que isso: permite edição total da linha a ser lida, permite manter histórico de linhas lidas, salvar histórico, recuperar histórico, e muitas outras coisas. Vou mostrar nesse script um pouco do que ela oferece.<br>
Obs.: Para compilar use: gcc -o arq arq.c -lreadline -lncurses

  



Esconder código-fonte

#include < stdio.h><br>
#include < readline/readline.h><br>
#include < readline/history.h><br>
<br>
main()<br>
{<br>
     char *s = (char *) 1;<br>
     int n = 0, sair = 0;<br>
<br>
     printf("Teste da biblioteca readline. Para sair entre com uma linha vazia\n\n");<br>
<br>
     read_history("/tmp/historico"); /* le o histórico do arquivo, se o arquivo existir */<br>
     using_history(); /* habilita o uso do histórico */<br>
<br>
     do {<br>
         /* o argumento da readline é o prompt a ser exibido<br>
           se o argumento for NULL, nenhum prompt é exibido */<br>
         s = readline("\\>"); <br>
<br>
         if ( *s ) /* para ignorar linhas em branco */<br>
         {<br>
             add_history(s); /* adiciona a linha lida ao histórico */<br>
             n++; /* para ser usada na função append_history abaixo */<br>
<br>
             /* aqui você pode fazer o que quizer com a linha lida */<br>
             printf("linha lida: %s\n", s);<br>
<br>
             /* e depois liberar a memória alocada pela readline */<br>
             free(s);<br>
         }<br>
         else<br>
             sair = 1;<br>
     } while ( !sair );<br>
<br>
     /* se o arquivo existir adiciona n linhas do histórico ao arquivo,<br>
       caso contrário escreve todo o histórico no arquivo */<br>
     if ( append_history(n, "/tmp/historico") != 0 )<br>
         write_history("/tmp/historico");<br>
<br>
     exit(0);<br>
}<br>
<br>

Scripts recomendados

Introdução ao ncurses

Selection sort

Jogo: Acerte o número (com níveis de dificuldade)

Controle de farmácia em C

Substituidor de letras


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário