Salve a tutti.
Ho un pogramma che genera un file, ma questo processo talvolta potrebeb essere molto lungo. Di conseguenza per evitare che l'utente si annoi nel vedere un cursore lampeggiante ho pensato di mostrare a video la percentuale del tempo residuo, confrontando il peso crescente del file creato con il peso che deve aggiungere.
utilizzo un thread per creare il file e conteggiare il tempo in contemporanea. Dunque, dato che preferisco non mostrare il programma vero e proprio, vi posto il sorgente di un altro programma, nel quale potrete aiutarmi più semplicemente, perchè l'unica cposa che fa è quella di creare un file. il thread parte in contemporanea al riempimento de file, ed il peso dovrebbe venire aggiornato, permettendo il calcolo della percentuale.
è ben commentato per permettervi una miglir visione del codice.
potrei avere includso tropi header, sono rimasti da precedenti tentativi
codice:
#include <io.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <iostream.h>
#include <windows.h>
#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>
#include <time.h>
float peso;
FILE * fp;
float percent;
struct stat C;
int funz1 ()
{
_beep(800,300); //beep per verificare se il thread è partito, da rimuovere
while ( (float(C.st_size)/1024/1024) != (1024*1024*10) )
{
peso = float(C.st_size)/1024/1024; //in teoria aggiorna il peso
printf("%6.3f MB\r", peso);
}
return 0;
}
int main()
{
DWORD dwThreadId, dwThrdParam = 1;
FILE * A;
srand ((unsigned) time(NULL));
A = fopen ("C:\\file.txt", "w+");
///
HANDLE thread = CreateThread(NULL, 0,
(LPTHREAD_START_ROUTINE) funz1, &dwThrdParam, 0, &dwThreadId);
///
for (int i=0;i<=(1024*1024*10);i++)
{
int ran = rand() %1000+1; //crea un numero casuale tra 1 e 1000
fprintf(A, "%c", ran); //crea un file di testo a caso
}
fclose(A);
int Exit;
cin>>Exit; //serve ad evitare che il programma si concluda senza permettere all'utente di vedere il risultato
}
tuttavia non funziona. Sapreste dirmi dove è il problema?
Grazie in anticipo. Cordiali saluti. Ciaooo