[MontelLUG] Impossibilità di utilizzare variabili statiche o globali
cesco
francesco.versaci a gmail.com
Lun 11 Apr 2016 11:11:01 CEST
Quarto Idus Apriles MMXVI Samuele haec scripsit:
> No, perché il pezzo di codice che fa il log, isolato in un programma a
> parte funziona. Il resto del programma senza le funzioni di log
> funziona.
Boh... :)
> Allego in ogni caso funzione di log:
Ti allego un restyling del codice, prova a vedere se cambia qualcosa...
--
______________
/\ \
\_| ciao ciao, | A camel is a horse designed by a committee.
| cesco | -- In Financial Times 31 Jan. 1976
| _________|_
\_/___________/
-------------- parte successiva --------------
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
typedef struct{
int Cont;
FILE *FileLog;
} Robo;
void myclose(FILE* FileLog){
if (FileLog != NULL)
{
fclose(FileLog);
FileLog = NULL;
printf("Chiuso file di log.\n");
}
}
FILE* myopen(){
char NomeFile[40];
time_t Secondi = time(NULL);
strftime(NomeFile, 40, "/msc/Log/%Y%m%d%H%M%S.txt", localtime(&Secondi));
printf("Nome file %s\n", NomeFile);
FILE *FileLog = fopen(NomeFile, "a+");
if (FileLog == NULL)
{
printf("Nuovo file %s\n", NomeFile);
FileLog = fopen(NomeFile, "w");
if (FileLog == NULL)
{
printf("Impossibile aprire file di log.\n");
}
}
else
printf("File aperto.\n");
return FileLog;
}
void mywrite(Robo *coso, char *Dati){
char Buffer[40];
time_t Secondi = time(NULL);
printf("Cont %d\n", coso->Cont);
if (coso->FileLog != NULL)
{
wd.Kick();
if (coso->Cont >= 30000)
{
myclose(coso->FileLog);
coso->FileLog = myopen();
coso->Cont = 0;
}
strftime(Buffer, 40, "%Y%m%d%H%M%S;", localtime(&Secondi));
fprintf(coso->FileLog, Buffer);
fprintf(coso->FileLog, Dati);
wd.Kick();
(coso->Cont)++;
}
}
int main(){
char *Dati = "blablabla\n";
Robo *coso = malloc(sizeof(Robo));
coso->Cont = 0;
coso->FileLog = myopen();
int i;
for (i = 0; i < 100000; ++i)
mywrite(coso, Dati);
free(coso);
return 0;
}
Maggiori informazioni sulla lista
montellug