Linuxtrent: Re: Progres

  • From: Lele Gaifax <lele@xxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxxxxxx
  • Date: Fri, 23 Feb 2001 20:13:42 +0100

>>>>> On Fri, 23 Feb 2001 19:59:28 +0100, Daniele Nicolodi <daniele@xxxxxxxxxx> 
>>>>> said:

    DN> On Fri, Feb 23, 2001 at 09:13:54AM +0100, Lele Gaifax wrote:

    >> Quel `\r' riporta il cursore all'inizio della riga, quindi la
    >> volta dopo stamperà sopra l'ultima...

    DN> Grazie.  Ma se non volessi ristampare tutta la riga ??? Chiedo
    DN> troppo ?

Be', la faccenda si complica un attimino: o fai il semplice e ti
limiti a riscrivere gli ultimi quattro caratteri, tipo

void
print_progress (const char *msg)
{
  /* Parti da 0% */
  printf ("%s: %3d%%", msg, 0);
}

#define BACKSPACE 7

void
update_progress (int perc)
{
  printf ("%c%c%c%c%3d%%", BACKSPACE, BACKSPACE, BACKSPACE, BACKSPACE,
                           perc);
}


void
end_progress (const char *msg)
{
  printf (" %s.\n", msg);
}


Per cose più complicate, necessiti di indirizzamento del cursore, e
qui entra in ballo la libreria curses/terminfo. Con quella ad esempio
hai i vari comandi per spostare il cursore a volontà...

ciao, lele.
-- 
nickname: Lele Gaifax   | Quando vivro' di quello che ho pensato ieri
real: Emanuele Gaifas   | comincero' ad aver paura di chi mi copia.
email: lele@xxxxxxxxxx  |               -- Fortunato Depero, 1929.


-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts: