PDA

View Full Version : [C] simulare barra di caricamento


tecno789
22-12-2011, 18:04
Salve, quest'oggi vorrei provare a simulare una barra di caricamento, si può fare in C?? Esempio, ho fatto un programma che copia i file, siccome che se i file sono di grosse dimensioni il terminale rimane praticamente impastato vorrei attenermi a scrivere una barra di caricamento che informa l'utente a che percentuale è la copia! si può fare una cosa del genere??

__ZERO_UNO__
22-12-2011, 20:46
quest'oggi vorrei provare a simulare una barra di caricamento, si può fare in C??

si può fare una cosa del genere??

Sì.

tecno789
22-12-2011, 20:49
Sì.

eeeeeheheh come??? :confused:

Filly95
22-12-2011, 21:18
click (http://bit.ly/rEOblJ)

tecno789
22-12-2011, 22:20
click (http://bit.ly/rEOblJ)

se posto qui vuol dire che non ho capito no??? :confused:

Filly95
23-12-2011, 09:02
se posto qui vuol dire che non ho capito no??? :confused:

Dubito, ci sono centinaia di guide. Comunque, con le librerie e le funzioni standard di C non si può ottenere una vera e propria progress bar, anche perché l'output è una console. Molti quindi adottano la soluzione più semplice: un printf che si "aggiorna". Ho scritto velocemente il codice, funziona ma ovviamente devi integrarlo con il tuo programma. Eccolo: click (http://codepad.org/xI6g68HY). Buon lavoro!

tecno789
23-12-2011, 12:49
Dubito, ci sono centinaia di guide. Comunque, con le librerie e le funzioni standard di C non si può ottenere una vera e propria progress bar, anche perché l'output è una console. Molti quindi adottano la soluzione più semplice: un printf che si "aggiorna". Ho scritto velocemente il codice, funziona ma ovviamente devi integrarlo con il tuo programma. Eccolo: click (http://codepad.org/xI6g68HY). Buon lavoro!

ma scusa questa però non è una vera e proprio progression bar.....cioè ti stampa solo i numeri ogni volta che termina il ciclo....io con il programma di copia come potrei addottarlo??

Filly95
23-12-2011, 13:33
Comunque, con le librerie e le funzioni standard di C non si può ottenere una vera e propria progress bar

ma scusa questa però non è una vera e proprio progression bar.....

Ma da vero? Azz che perspicacia!

Comunque, vorresti una roba del genere?
Progress: [####------------------------------] 30%
Ho provato a scrivere qualcosa ma non mostra i cancelletti e i trattini e non ho voglia di perderci troppo tempo, ecco quello che ho scritto, adattalo e fallo funzionare:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
int i;
char perc[100];
for(i=0;i<100;i++) {
perc[i] = "-";
}
for(i=0;i<=100;i++) {
printf("progress: [%s] %d%%\r", perc[i], i); //in realtà questo mostra solo l'attuale carattere dell'array, per stampare tutto l'array dovresti mettere un altro for
perc[i] = "#";
sleep(100);
fflush;
}
getchar();
return 0;
}
Comunque come integrarlo nel programma è compito tuo, il programma è tuo! Basta pappa pronta però adesso...

tecno789
23-12-2011, 16:33
Ma da vero? Azz che perspicacia!

Comunque, vorresti una roba del genere?

Ho provato a scrivere qualcosa ma non mostra i cancelletti e i trattini e non ho voglia di perderci troppo tempo, ecco quello che ho scritto, adattalo e fallo funzionare:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
int i;
char perc[100];
for(i=0;i<100;i++) {
perc[i] = "-";
}
for(i=0;i<=100;i++) {
printf("progress: [%s] %d%%\r", perc[i], i); //in realtà questo mostra solo l'attuale carattere dell'array, per stampare tutto l'array dovresti mettere un altro for
perc[i] = "#";
sleep(100);
fflush;
}
getchar();
return 0;
}
Comunque come integrarlo nel programma è compito tuo, il programma è tuo! Basta pappa pronta però adesso...


devo dire che sei stato un grande, ero fuori casa e non avevo compilato bene il codice, andava più che bene anche quello di prima! grazie mi hai aiutato tantissimo ora mi ci metto su, grazie mille.

Filly95
23-12-2011, 17:56
devo dire che sei stato un grande, ero fuori casa e non avevo compilato bene il codice, andava più che bene anche quello di prima! grazie mi hai aiutato tantissimo ora mi ci metto su, grazie mille.

Di nulla, ma è un progetto così per fare oppure stai facendo qualcosa di "grosso"?

tecno789
23-12-2011, 20:19
Di nulla, ma è un progetto così per fare oppure stai facendo qualcosa di "grosso"?

ma va magari fosse qualcosa di "grosso", da come avrai potuto intuire lo sto studiando il C per cui non sono un programmatore esperto. In pratica quello che volevo mettere io era la barra di stato visto che ho fatto un programma stupido che copia ogni sorta di file.

grazie della pazienza.

tecno789
25-12-2011, 20:53
scusami se sono ancora qui a rompere, ma non ho capito, allora ok così si fa il caricamento, ma come faccio a mettere in funzione la copia con lo sleep??? cioè ora tu l'avevi impostato a 100 giusto? io come faccio a far vedere che terminato il caricamento è terminata anche la copia? poi il problema è che i file possono essere di dimensioni diverse....bel problema...:(

Filly95
25-12-2011, 21:56
Non so come potresti integrarlo con quel che vuoi fare, soprattutto perché il C è un linguaggio un po' limitato sotto alcuni punti di vista... So che sicuramente con il c# si può fare, non so se con il c++ si può...

tecno789
25-12-2011, 21:58
Non so come potresti integrarlo con quel che vuoi fare, soprattutto perché il C è un linguaggio un po' limitato sotto alcuni punti di vista... So che sicuramente con il c# si può fare, non so se con il c++ si può...

ok grazie..... :(

Agat
27-12-2011, 16:15
Perché non dai un'occhiata al codice della wget ?

http://www.gnu.org/software/wget/

tecno789
28-12-2011, 00:45
Perché non dai un'occhiata al codice della wget ?

http://www.gnu.org/software/wget/

scusami non ci ho capito niente, a cosa mi servirebbe??

Agat
28-12-2011, 10:37
Usa progress.h e vedi se riesci ad adattarlo al tuo programma.

L'effetto è la barra di caricamente di wget, che puoi vedere qui

http://files.cyberciti.biz/uploads/tips/2005/06/wget-example-unix-commands.png