View Full Version : escape e C
IspiCiosa
13-08-2005, 13:53
Salve ragazzi volevo sapere in C.....
come si fa per "pulire" la schermata cioè con \n si va a capo...
con \t si va avanti di una tabulazione
con \a suona il cicalino del sistema
ma se voglio fare in modo ke si vada avanti di una schermata come si fa?
Ziosilvio
13-08-2005, 14:16
Credo che non sia un'operazione portabile, e che quindi non ci sia un modo di farlo che vada bene su tutti i sistemi.
Il modo più semplice credo sia una chiamata a system, con argomento uguale al comando di shell che pulisce lo schermo: ad esempio, sotto Windows:
system("cls");
Ma se usi una libreria specifica (ad esempio, curses sotto UNIX), probabilmente già contiene una funzione che ripulisce la schermata; però bisogna cercarla nella documentazione.
Su windows se includi la libreria conio.h puoi usare la funzione clrscr() ;)
Fenomeno85
13-08-2005, 15:58
Su windows se includi la libreria conio.h puoi usare la funzione clrscr() ;)
non era solo di borland?
~§~ Sempre E Solo Lei ~§~
IspiCiosa
13-08-2005, 19:12
ok ora proverò grazie
IspiCiosa
13-08-2005, 19:37
allora con conio.h ecc ecc nn mi funziona....
con system("cls"); si.......
grazie...... :)
Futuregames
13-08-2005, 20:22
conio.h è della borland.. le importazioni di questa non sempre hanno la funzione clrscr
Con queste due istruzioni cancelli lo schermo:
printf("\033[2J");
printf("\033[0;0f");
ma non chiedermi perche'! :boh: ;)
Ciao
Ziosilvio
14-08-2005, 08:44
Con queste due istruzioni cancelli lo schermo:
printf("\033[2J");
printf("\033[0;0f");
ma non chiedermi perche'! :boh: ;)
La stringa "\033[2J\033[0;0f" (una singola chiamata a printf su questa stringa, equivale alle due chiamate che hai indicato tu) contiene due sequenze di escape da terminale UNIX ('\033' è il carattere ASCII di escape, in ottale).
Però, per quanto ne so, tali sequenze non sono necessariamente valide su altri sistemi, quindi anche questa soluzione non è portabile.
cdimauro
14-08-2005, 09:30
Salve ragazzi volevo sapere in C.....
come si fa per "pulire" la schermata cioè con \n si va a capo...
Non è esatto: \n va bene per i sistemi Unix-like, per AmigaOS e altri sistemi operativi che lo utilizzano per questo scopo. Il Mac (non so OS X, ma il Classic sì) usa \r, ad esempio. DOS e Windows usano \r\n.
Manuale ASCII alla mano, per andare a capo servono \r e \n: il primo è il ritorno carrello (quindi si torna alla prima colonna stampabile) e il secondo indica di avanzare di una linea.
con \t si va avanti di una tabulazione
con \a suona il cicalino del sistema
ma se voglio fare in modo ke si vada avanti di una schermata come si fa?
Il carattere giusto, secondo la tabella ASCII, dovrebbe essere quello di codice 12 (decimale), che corrisponde al form feed. Non ricordo se esiste un apposito carattere di escape per il C, ma uno "\014" dovrebbe andare bene (se il form feed è implementato correttamente).
Con le stampanti ad aghi ricordo che funzionava... :p
cdimauro
14-08-2005, 09:31
La stringa "\033[2J\033[0;0f" (una singola chiamata a printf su questa stringa, equivale alle due chiamate che hai indicato tu) contiene due sequenze di escape da terminale UNIX ('\033' è il carattere ASCII di escape, in ottale).
Però, per quanto ne so, tali sequenze non sono necessariamente valide su altri sistemi, quindi anche questa soluzione non è portabile.
Sono sequenze di escape dello standard ANSI...
Usatissime ai tempi dell'Amiga per creare "ASCII art"... :p
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.