У меня есть программа C с функцией времени, объявленной глобально следующим образом:
time_t t = time(NULL);
struct tm *tm = localtime(&t);
time(&rawtime);
void file_name()
{
sprintf(buffer,"data/log_%d.%d_%d:%d:%d",tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec);
char *p = buffer;
for(;*p;++p)
{
if(*p == ' ')
*p = '_';
}
printf("%s",buffer);
}
}
void create_file()
{
file_name();
fptr = fopen(buffer,"w");
}
void read_data();
{
.
.
.
.
sprintf(buffer1,"_%d:%d:%d",tm->tm_hour,tm->tm_min,tm_sec);
fprintf(fptr,"%d.%d_%d:%d:%d,%d",tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec);
close_file();
}
int main()
{
read_data();
.
.
return 0;
}
Поскольку я хочу использовать tm
еще в двух функциях, например, одна из них — filename(); и аналогично другая функция, называемая read_data(); в программе для печати месяца, даты и т. д. Я хочу объявить их глобально. Но когда я компилирую программу, она выдает ошибку, называемую элементом инициализатора, не константа в time_t t = time(NULL);
и struct tm *tm = localtime(&t);
Может ли кто-нибудь помочь мне в этом заранее спасибо.