Newsgroup: it.comp.lang.c
Titolo: C & terminale

Ciao a tutti, esiste una funzione standard per pulire lo schermo del 
terminale? se no qual'č l'alternativa piů portabile?
Grazie
Wezzy

 terminale? se no qual'è l'alternativa più portabile?
No, perche' il C e' concepito per sistemi che non hanno il video, quindi ha 
senso solo un sistema di I/O come quello implementato :)
Ci sono 4 modi per farlo:
- lavorare direttamente con il terminale, inviando l'opportuna sequenza di 
  cancellazione (in caso di terminali ANSI le sequenze sono equivalenti)
- utilizzare l'apposita funzione di cancellazione che ti fornisce l'ambiente 
  sottostante:
  - system("clear") --> linux/unix in generale
  - system("cls")   --> windows/dos
- utilizzare una libreria apposita per la gestione del terminale e il metodo 
  (portabile ovunque esista la libreria) per cancellare lo schermo (v. 
  (n)curses e Conio).
- scrivere N righe vuote a video fino a cancellare lo schermo :)
  Ma attento che non puoi sapere quante sono, quindi e' un metodo piuttosto 
  inefficiente.
Nessuno e' infallibile, forse il piu' portabile e' quello di utilizzare le 
librerie multipiattaforma di gestione dei terminali (sperando che la 
diffuzione sia ampia, ma hai la garanzia che se esiste un porting, allora 
si comporta esattamente come ti aspetti).
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

è invece c'è!!!
prova a mandare che un printf un chr(12) e vedrai.
cancella lo schermo del terminale.

 prova a mandare che un printf un chr(12) e vedrai. 
eh ?

 cancella lo schermo del terminale.
Non funziona.
Tommy



Non e` un metodo standard.

Ok grazie a tutti, penso che mi butterò sulle lib curses.
Grazie
Wezzy

 ha scritto nel messaggio
news:avfvqg$pg$1...@sparta.btinternet.com...

non funziona a casa tua.

 non funziona a casa tua.
Quindi se non funziona a casa mia, al contrario di quello che dici tu, non
e' un sistema portabile!
(sei tu che dicevi "invece c'e'!", io ho solo detto che da me non funziona!)
Tommy


siamo seri perfavore.



Guarda che Tommy era serissimo.
La funzione da te nominata non e' ne' ANSI ne' POSIX. Mi chiedo anche da
quale liberia tu l'abbia presa.
non e' di certo una libreria standard.
Ciao,
Riccardo
-- 
-=Riccardo Galli=-
 _,e.
s~  ``
 ~@.   ideralis Programs
.   ol 
 `**~  
http://www.sideralis.net

 quale liberia tu l'abbia presa.
Visual Basic? :-)
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

"Andrea Laforgia" <x@x.x> ha scritto nel messaggio
news:l3pn1v4i2gf73ho37...@4ax.com...

E' un metodo standard per i terminali standard.
Il carattere di controllo che ho menzionato è definito dallo standard ANSI.
Se un terminale è standard, si puo' gestire in questo modo.

 non e' di certo una libreria standard.
Infatti non è una funzione, ma un carattere di controllo che fa cancellare
lo schermo del terminale.
perchè abbia affetto, bisogna inviarlo al terminale con una sequenza ANSI.

 perchè abbia affetto, bisogna inviarlo al terminale con una sequenza ANSI.
Allora non e' standard come metodo [1]. Cosa ti hanno detto finora?
C:\>iao Angelo
[1] Per "standard" si intende qualcosa che si comporta allo stesso modo in
    ogni condizione lecita per il suo uso (e perche' esiste uno standard
    che ne descrive le caratteristiche).


> >cancella lo schermo del terminale.
forse l'ho interpretato male, ma a me questo:
<code>
#include <stdio.h>
int main(){
  char c=12;
  printf("%c\n",c);
}
</code>
fa solo avanzare di una linea (dovrei looparlo una 40 di volte? 
non basterebbe dare semplicemente un \n per tante volte quante è
la lunghezza dello schermo?   ...sono sotto linux)
ciao
-- 
By_Baitch
"Live Your Life!" (Ring ain't a jail)
http://utenti.tripod.it/baitch

 forse l'ho interpretato male, ma a me questo:
L'hai interpretato male perchè mi sono spiegato male.
Esiste un carattere di controllo che dovrebbe essere "\f" , che rappresenta
il form_feed della stampante (salto_pagina).
Questo carattere di controllo, sotto unix/linux, se lo mandi alla stampante
e l'output della stampante poi
lo ridirigi sullo standard output del terminale, si cancella lo schermo del
terminale (su tutti quelli che ho provato si cancellava).
Avevo fatto uno script che reindirizzava l'output della stampante sul video
del terminale e avevo notato che
quel carattere cancellava lo schermo, purtroppo lo script non riesco più a
trovarlo, ma un esperto unix lo sa fare.
Comunque, niente a che vedere col linguaggio C e le sue librerie, ma con la
shell di UNIX e gli script..
percio' tutti i post che ho inserito in questo thread sono OT ,
scusate!
Ciao :)
newbie.


gente scusate, scusate!, ho capito male il primo thread di Wezzy!
ma non mi sono inventato nulla, mi sono solamente spiegato male.
scusa anche a TOMMY.
se volete leggere il mio ultimo post in fondo... ho concluso.
ciao a tutti.
Newbie

 una persona seria non risponde con un: "non funziona".
Credo di essere seria.
Ho provato e non funziona, cosa avrei dovuto dire?
Ma... non rispondere nemmeno, non importa.
Tommy

 scusa anche a TOMMY.
Scusa accettate ;-) Capita... Non importa.
Alla prossima.
Tommy

 ha scritto nel messaggio
news:avkdub$ic$1...@helle.btinternet.com...

Tommy scusaaa!!!
ho frainteso la tua risposta.
ciao.

E' un metodo standard per i terminali standard.
Non e` un metodo standard e basta.
Con "standard" si intende "svincolato da un contesto di utilizzo
preciso e valido, a priori, su qualunque piattaforma".  

"Andrea Laforgia" <x@x.x> ha scritto nel messaggio
news:6c902v01jp08koh36...@4ax.com...

non esiste.

 non esiste.
ANSI C.
Dopo aver 'scherzato' con la faq di comp.lang.c e aver detto questa
potresti smetterla di contestare delle ovvietà per il solo gusto di farlo ?

 potresti smetterla di contestare delle ovvietà per il solo gusto di farlo
?
guarda che io parlavo di METODO_STANDARD che è una cosa diversa dal dire
STANDARD.
i metodi standard a mio modesto parere non esistono perchè sono troppe le
"variabili in gioco".
terminali, sistema-operativo, cpu risc, cisc, ecc.... ecc... per non parlare
del byte-order.
(sicuramente nemmeno il "metodo" che io dicevo è standard come pensavo)
ciao
newbie

STANDARD.
La fai troppo lunga per i miei gusti: il nostro amico ha chiesto una
funzione standard e di funzioni standard per compiere questa
operazione non ne esistono.  Punto.

 sono certo di no.
Si, come tutte le persone che le hanno lette, almeno una volta, anche solo 
di sfuggita :)


 terminale? se no qual'è l'alternativa più portabile?
ho letto tutto "ramo" prima di rispondere
so bene che non esiste un metodo standard per cancellare lo schermo (evito
di ripetere quanto già scritto + volte) ma proprio oggi mi sono trovato a dover
affrontare lo stesso argomento in Java (peggio ancora perché li non funziona
neanche chinando i comande cls o clear del sistema operativo)
ho risolto inviando la sequenza di escape dei terminali, se può essere utili la
riporto anche qui.
la sequenza dei byte per cancellare lo schermo è
    ESC [1J
ovvero la sequenza di codici ASCII
27 91 49 17
Mentre per riposizionare il cursore ad inizio schermo (in alto a sinistra) è
27 91 72
se volte posto l'urlo di un sito con una tavola parziale di questi comandi
Perdonatemi ma non l'ho implementata in C e non saprei che funzione chiamare per
inviare la sequenza, basta una chr(CODICE_ASCII)?
ciao a tutti
Giorgio


allora ricapitoliamo...
tu da come parli sembri di sapere tutto
e io non so niente.
ti senti gratificato adesso?
continua cosi.

 con chi cazzo ti credi di parlare..
[CUt]
e bastaaa per favore...
ma che risultato portano post polemici e offensivi come
questo?!?! e mica ti ha offeso la famiglia, ti ha puntualizzato
delle cose che, alla fine, erano vere...(oltre tutto tu stesso hai
ammesso di aver letto e risposto male!)
che senso ha cominciare un Flame?!?!
e poi...ho avuto modo di leggere post di Andrea in molte
occasioni e su altri NewsGroup..ti assicuro che è tutto
fuorché un provocatore volgare e, soprattutto, è molto preparato
buona giornata e buon lavoro a tutti
Giò


[cut]
La fai troppo lunga per i miei gusti.

tu da come parli sembri di sapere tutto e io non so niente.
Diciamo che io conosco il significato di "funzione standard" e tu no.
Il campo di conoscenza e` piu` ristretto del "tutto" che citi, ma
quanto hai detto rimane vero.


ma che acume!, cmq rimane certamente vero quanto ho
detto e cioè che sei uno SXXXXXO (nel mio post precedente era sottinteso)
come tu hai pensato e sottinteso tante altre belle paroline nei miei
confronti, percio
adesso siamo PARI.
ma a chi vuoi darla a bere con questi giochetti di parole,  a me??
uuahahhahahhahha...
non farmi ridere.
SEI UN PROVOCATORE E BASTA.

non farmi ridere.
Non guarda, non ti faccio ridere (anche perche` lo stai gia` facendo)
ti plonko direttamente, cosi` evito anche di spendere soldi nello
scaricare le tue stupidaggini ;)
Ciao Ciao e allaccia il paracadute...
*plonk*

 con chi cazzo ti credi di parlare..
Io non so con chi pensasse di parlare Andrea, quello te lo dira' (non ho 
intenzione di leggermi il flame), io fino a questo tuo ultimo messaggio 
pensavo di parlare con una persona civile.


 pensavo di parlare con una persona civile.
eh?
uno che fa *plonk* invece è una persona civile?
sei dalla parte sbagliata caro Mox.
è lui quello che provoca i flame,
e prima o poi travolgerà anche te.
ciao

 e prima o poi travolger�anche te.
Io non sono dalla parte di nessuno (anche perche' qui nessuno ha bisogno di 
sostegno), semplicemente penso che tu in questo thread abbia parlato prima 
di accendere il cervello e poi tu abbia continuato imperterrito e testardo 
a difendere la tua linea.
Ti riassumo cosa hai detto:
tempo 1) le faq fanno pena
tempo 2) no scherzavo, non le ho mai lette dicevo tanto per dire, ma 
         scommetto che se le leggessi non mi troverei daccordo e difendo 
         questa assurda posizione che ho preso
tempo 3) come vi permettete di farmi notare che ho sbagliato a parlare nei 
         post precedenti?
I primi 2 punti non li commento. Quello che dimostra che non sei in grado di 
sostenere un discorso civile e' il 3.
Per il resto io non ho mai plonkato nessuno, perche' faccio parte della 
corrente di pensiero contraria al *plonk*, non perche' condivida le 
cavolate che sono state dette in questo thread. Non credere che perche' 
solo una persona ti abbia plonkato (e continuo a dire che non e' bello 
plonkare le persone), gli altri reputino intelligente quello che hai detto 
o condividano le tue posizioni.
Usanet non e' un posto "civile", e' un posto dove le persone dedicano 
liberamente il proprio tempo, non vengono pagate per sorbirsi le 
stupidaggini, quindi sono liberi di plonkarsi e mandarsi al diavolo. Io 
personalmente preferisco la seconda.
Per la cronata, se fossi atto a plonkare le persone non avrei aspettato 
tanto come ha fatto Andrea (penso che in fondo lui sia sempre troppo 
ottimista).


 La fai troppo lunga per i miei gusti.
ah..capito..ti piacciono le "sveltine"...
de gustibus ;))

 di accendere il cervello e poi tu abbia continuato imperterrito e testardo
guarda, forse č meglio che lo accendi TU il cervello prima di parlare
perchč non hai capito un accidente di nessuno dei miei post che hai letto.
(1) il thread "C & Terminale" non c'entrava un fico secco con il thread
"Invertire una
stringa in modo ricorsivo",  siete voi che avete riportato cose da un thread
all'altro creando confusione.
neppure la Faq c'entrava niente, tant'č vero che prima mi sono *scusato*
dello scherzo e poi mi sono anche *spiegato*!,
voi avete letto i thread al contrario.
(2) "uno che fa *plonk*" era riferito a quel tuo gentilissimo amico che mi
ha provocato nel thread "C & Terminale" senza alcun motivo,
io ho semplicemente risposto alla sua provocazione come (IMHO) si meritava.
E' adesso se sei d'accordo, facciamola finita perfavore con questo flame che
mi
farebbe tanto piacere,
che tra l'altro tu non c'entravi un bel niente in questa "storia".
amen.