Неправильно определяется время (функция strftime, язык C)
Вот кусок кода:
Код:
FILE *fb;
if(fb=fopen("count_drives.log","a")){
char *date_s;
date_s=(char*)calloc(8,sizeof(char));
if(date_s==NULL){
fprintf(fb,"Error read time. Drive %s connected.",argv[1]);
exit(1);
}
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
//strftime(date_s,25,"%Y.%m.%d %H:%M:%S",timeinfo);
strftime(date_s,25,"%Y.%m.%d %T",timeinfo);
fprintf(fb,"%s Drive %s connected.\n",date_s,argv[1]);
free(date_s);
}
fclose(fb);
if(fb=fopen("count_drives.log","a")){
char *date_s;
date_s=(char*)calloc(8,sizeof(char));
if(date_s==NULL){
fprintf(fb,"Error read time. Drive %s connected.",argv[1]);
exit(1);
}
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
//strftime(date_s,25,"%Y.%m.%d %H:%M:%S",timeinfo);
strftime(date_s,25,"%Y.%m.%d %T",timeinfo);
fprintf(fb,"%s Drive %s connected.\n",date_s,argv[1]);
free(date_s);
}
fclose(fb);
А вот текстовый файл лога, поулченный в результате работы программы:
Код:
2011.03.02 20:39:58 Drive I:\ connected.
2011.03.02 20:39:58 Drive F:\ connected.
2011.03.02 20:40:58 Drive I:\ connected.
2011.03.02 20:42:58 Drive H:\ connected.
2011.03.02 20:39:58 Drive F:\ connected.
2011.03.02 20:40:58 Drive I:\ connected.
2011.03.02 20:42:58 Drive H:\ connected.
Почему постоянно оно записывает 58 секунд, даже если тогда может быть и 15, и 20 секунд? Специально на часы смотрел. Пробовал параметр %S и %T, но выходит одно и тоже :confused: Если сделать вот так:
strftime(date_s,25,"%T",timeinfo);
то секунды выводятся правильно. А вот в таком порядке, как в коде программы, почему-то не хочет:mad:
Помогите побороть этот глюк или мой недосмотр пожалуйста)
ай поспешил я с вопросом. Уже сам нашел ошибку. Я массив объявил на 8 ячеек, в то время, как нужно минимум на 19)