log
неинициализируется при вызове strcat(log,datetime);
Следовательно, неопределенное поведение.
char log[200];
char datetime[200];
time_t now = time(NULL);
strftime(datetime,200,"%x %X", localtime(&now));
strcat(log,datetime);
Или, точнее, в log
, вероятно, есть символ мусора в результате объявления массива стека - сбора всего, что происходит в стеке. Исправить это просто. Измените вызов strcat
на strcpy
:
strcpy(log,datetime);
В качестве альтернативы вы могли бы сделать свой код более эффективным, используя меньше вызовов strcat и избегая избыточных копий строк (и потенциальных переполнений буфера). Рассмотрите это как альтернативу тому, что вы уже написали:
char datetime[200];
time_t now = time(NULL);
strftime(datetime,200,"%x %X", localtime(&now));
sendline[strlen(sendline)-1] = 0;
recvline[strlen(recvline)-1] = 0;
fprintf(fp, "%s - %s - %s\n", datetime, sendline, recvline);