Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-01-2006, 08:17   #1
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
[C]info su orologio e clrscr

ciao ragazzi! ieri mentre ero a lavoro mi sono venute un paio di curiosità che vorrei postare:

come faccio durante il mio programma a cancellare tutto il contenuto dello schermo?..se non ricordo male in unix si usava qualcosa del tipo clrscr...

e poi come faccio a fare in modo che sia visualizzata ora e data all'interno del programma?...ho provato a leggere il mio manuale ma mi sembra una cosa un pò complicata sbaglio?

grazie per le risposte
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 09:06   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da NeoNum6
ciao ragazzi! ieri mentre ero a lavoro mi sono venute un paio di curiosità che vorrei postare:

come faccio durante il mio programma a cancellare tutto il contenuto dello schermo?..se non ricordo male in unix si usava qualcosa del tipo clrscr...

e poi come faccio a fare in modo che sia visualizzata ora e data all'interno del programma?...ho provato a leggere il mio manuale ma mi sembra una cosa un pò complicata sbaglio?
Ciao, non è particolarmente complicato.
Ti posto un sorgente di esempio. È un piccolo programma che usa la libreria curses (per la gestione del terminale) che cancella lo schermo, stampa la data/ora corrente ed aspetta un tasto prima di uscire.

Codice:
#include <stdio.h>
#include <time.h>
#include <curses.h>

int main (int argc, char *argv[])
{
    time_t     t;
    struct tm *tm;

    initscr ();   /* Curses: inizializzazione */
    erase ();     /* Curses: cancella schermo */
    refresh ();   /* Curses: refresh */
    noecho ();    /* Curses: toglie eco */

    /* Lettura data/ora */
    t = time (NULL);
    tm = localtime (&t);

    move (11, 23);   /* Curses: muove cursore */

    /* Stampa data/ora con la funzione printw di Curses */
    printw ("Data/Ora: %02d/%02d/%04d  %02d:%02d:%02d\n",
            tm->tm_mday, tm->tm_mon+1, tm->tm_year+1900,
	    tm->tm_hour, tm->tm_min, tm->tm_sec);

    move (13, 31);
    printw ("Premi un tasto");

    refresh ();   /* Curses: refresh */
    getch ();     /* Curses: aspetta un tasto */

    endwin ();    /* Curses: terminazione */

    return 0;
}
Su Linux lo puoi compilare con:

gcc -lcurses -o prova prova.c

Se c'è qualcosa che non è chiaro, chiedi pure.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 09:18   #3
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
anticipatamente ti ringrazio sei stato gentilissimo...

/* Lettura data/ora */
t = time (NULL);
tm = localtime (&t);

questo comando non mi è ben chiaro...t non era di tipo time_t?ora che cosa comporta l'assegnazione a time(NULL)...e come mai proprio null?


...invece per la cancellazione dello schermo basta
erase();
...quale libreria lo include?
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 09:46   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da NeoNum6
/* Lettura data/ora */
t = time (NULL);
tm = localtime (&t);

questo comando non mi è ben chiaro...t non era di tipo time_t?ora che cosa comporta l'assegnazione a time(NULL)...e come mai proprio null?
time() è una funzione della libreria standard che è definita così:

time_t time (time_t *t);

Ti restituisce il numero di secondi trascorsi dalle 00:00:00 del 1 Gennaio 1970 (UTC). Ha come argomento un puntatore a time_t, cioè se t non è NULL, memorizza il valore anche nella variabile puntata da t. In pratica sono equivalenti:

t = time (NULL);
e
time (&t);

Quote:
Originariamente inviato da NeoNum6
...invece per la cancellazione dello schermo basta
erase();
...quale libreria lo include?
erase() fa parte della libreria ncurses (l'include è curses.h e si linka con -lcurses). Nel sorgente che ti ho scritto ci sono diverse chiamate (indispensabili, tra l'altro) a questa libreria.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 09:53   #5
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
...sinceramente faccio ancora fatica per quanto riguarda ora e data...
ma mi pare di aver capito che con un
#include <curses.h>
e un successivo
erase();
mi basta per cancellare lo schermo!


se confermi questo almeno un primo traguardo l'abbiamo raggiunto!
scusami se faccio domande stupide ma non sono a casa e non posso testare direttamente su macchina!

...per quanto riguarda time()..
a cosa serve l'inizializzazione di curses??e refresh e noecho?

initscr (); /* Curses: inizializzazione */
refresh (); /* Curses: refresh */
noecho (); /* Curses: toglie eco */
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 10:14   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da NeoNum6
...sinceramente faccio ancora fatica per quanto riguarda ora e data...
ma mi pare di aver capito che con un
#include <curses.h>
e un successivo
erase();
mi basta per cancellare lo schermo!


se confermi questo almeno un primo traguardo l'abbiamo raggiunto!
scusami se faccio domande stupide ma non sono a casa e non posso testare direttamente su macchina!

...per quanto riguarda time()..
a cosa serve l'inizializzazione di curses??e refresh e noecho?

initscr (); /* Curses: inizializzazione */
refresh (); /* Curses: refresh */
noecho (); /* Curses: toglie eco */
La libreria ncurses è una libreria con parecchie funzioni che ha lo scopo di gestire il terminale in modo completo.
Questa libreria va però gestita ed utilizzata in un modo ben preciso. La funzione initscr() deve sempre essere la prima funzione di ncurses ad essere chiamata. Essa determina il tipo di terminale, inizializza le sue strutture di dati interne, ecc...
Al contrario, endwin() deve essere l'ultima, poiché libera tutto il necessario e termina l'utilizzo della libreria ncurses.

Le altre funzioni servono per fare altre cose. Quando tu cancelli lo schermo (con erase) o scrivi qualcosa (con printw), non viene eseguita la cosa subito ma bisogna chiamare refresh().
Questo perchè la gestione del terminale è "bufferizzata". Quindi fai tutte le operazioni che vuoi (scrivi, cancella, ecc...) e poi con refresh() le "butti" realmente sul terminale.

noecho() è molto semplice: quando aspetti un carattere con getch(), una volta premuto un carattere, lui, per default, lo stampa (cioè fa l'eco!). Chiamando noecho() disabiliti questa funzionalità.

Ecco perché, in sostanza, non basta fare solo una erase!
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 10:20   #7
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
quante ne sai!!
#include <curses.h>
initscr ();
erase ();
refresh ();

...parti di codice...

endwin();

questo dovrebbe bastare per cancellare lo schermo giusto???
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 10:22   #8
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da NeoNum6
#include <curses.h>
initscr ();
erase ();
refresh ();

...parti di codice...

endwin();

questo dovrebbe bastare per cancellare lo schermo giusto???
Giusto.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 10:25   #9
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
per quanto riguarda time.h...

/* Lettura data/ora */
t = time (NULL);
tm = localtime (&t);

/* Stampa data/ora con la funzione printw di Curses */
printw ("Data/Ora: %02d/%02d/%04d %02d:%02d:%02d\n",
tm->tm_mday, tm->tm_mon+1, tm->tm_year+1900,
tm->tm_hour, tm->tm_min, tm->tm_sec);


lettura data ora:
t = time (NULL); fa in modo che in t vengano memorizzati i secondi trascorsi dal 1-1-70...
tm=localtime (&t);
cosa fa?
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 10:36   #10
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da NeoNum6
tm=localtime (&t);
cosa fa?
La funzione time() ti ritorna il numero complessivo di secondi dalla data che ho indicato. Un numero come ad esempio 1136374406, quindi non molto utile all'utente! Oltretutto è relativo al fuso orario di Greenwich.

localtime(), prende questo valore e calcola tutte le singole informazioni come giorno, mese, anno, ecc... che poi inserisce in una struttura di tipo struct tm di cui ti restituisce un puntatore. La data/ora è locale, quindi tiene conto del fuso orario impostato nel sistema.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 10:46   #11
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
perfetto!
e nel caso io volessi stampare data/ora con una printf? con una putchar?
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 10:56   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da NeoNum6
perfetto!
e nel caso io volessi stampare data/ora con una printf? con una putchar?
putchar non sarebbe l'ideale poiché stampa 1 solo carattere. Con la printf è praticamente uguale all'esempio che ti ho fatto con la printw (della curses).
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 11:36   #13
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
grazie mille sei stato chiearo e gentilissimo!
tutti speriamo di incontrare utenti come te nel momento del bisogno
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2006, 23:23   #14
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
ho provato sulla macchina e per erase() non c'è stato niente da fare...non trova la libreria curses.h !!!!


curses.h:No such file or directory
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli

Ultima modifica di NeoNum6 : 04-01-2006 alle 23:35.
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 05-01-2006, 08:20   #15
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da NeoNum6
ho provato sulla macchina e per erase() non c'è stato niente da fare...non trova la libreria curses.h !!!!


curses.h:No such file or directory
Che sistema Linux usi? Per usare a livello di sviluppo la libreria ncurses bisogna avere installato nel sistema il pacchetto "ncurses-devel-XXX" (XXX è la versione).
Se il tuo sistema usa i package RPM puoi provare a fare:

rpm -qa | grep curses

e vedere quali pacchetti ti visualizza.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 05-01-2006, 15:21   #16
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
...eehm...non uso linux...
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 05-01-2006, 15:51   #17
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da NeoNum6
...eehm...non uso linux...
oops .. potevi dirlo prima.
La libreria Curses è "nata" originalmente sui sistemi Unix/Linux. Su altri sistemi non Unix, non esiste in modo "nativo". Ci sono sicuramente dei porting su altre piattaforme e uno di questi porting (che non ho mai usato ma so che esiste) è la PDCurses (Public Domain Curses), la trovi su http://pdcurses.sourceforge.net.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 05-01-2006, 15:54   #18
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
ma un modo un po più semplice proprio non c'è???

strano che un linguaggio potente come il C non possa fare cose così semplici
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 05-01-2006, 16:09   #19
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da NeoNum6
ma un modo un po più semplice proprio non c'è???
Il modo più semplice e "stupido" sarebbe quello di usare la funzione system (è dichiarata in stdlib.h):
system ("cls"); /* Per sistemi DOS/Win */

system ("clear"); /* Per sistemi Linux/Unix */

Quote:
Originariamente inviato da NeoNum6
strano che un linguaggio potente come il C non possa fare cose così semplici
Il problema non è tanto il linguaggio o la "potenza" del linguaggio in se. Il problema è che la gestione di una console (e in generale di un "terminale") esula dagli obiettivi del linguaggio "C". Quindi si tratta di una gestione system-dependent da valutare in base al sistema operativo.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 05-01-2006, 22:48   #20
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
come mai l'uso di system è stupido?

sul resto hai sicuramente ragione tu!
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
Rocket Lab acquisisce Iridium: nasce un ...
Una ventola nascosta e un design fuori d...
Display e fotocamera insieme: a Zurigo n...
Lenovo Idea Tab Plus, il tablet per stud...
Un ingegnere di AMD ha riprodotto in cas...
SanDisk Optimus cresce con nuovi SSD cer...
Loongson contro Intel e AMD: dalla Cina ...
Australia, quasi tutti gli under-16 aggi...
Oltre 1.300 miliardi di dollari per la p...
Un nuovo studio mette in dubbio la natur...
Crisi Volkswagen, torna l'ipotesi cessio...
Il CERN spegne il Large Hadron Collider:...
Stranger Than Heaven avrà una storia mol...
Il futuro prezzo di PS6 preoccupa i gioc...
AMD Ryzen 10000 sempre più vicini...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:27.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v