gpt4 book ai didi

c - 将 fprintf 与 time.h 一起使用时避免换行

转载 作者:行者123 更新时间:2023-12-02 02:11:55 28 4
gpt4 key购买 nike

在将当前时间写入 log.txt 文件之后,我不断收到打印的新行。在此示例中,我希望将时间和 logMessage 打印在同一行上。您能否指出我在这里缺少的内容的正确方向?

从主函数调用 logWrite 函数:

strcpy(logMessage, "**********RESTART**********");
logWrite(logMessagePtr);

logWrite 函数是:

void logWrite(char * logMessagePtr)
{
/* Initialise time variables for log file. */
int hours, minutes, seconds, day, month, year;
// time_t is an arithmetic time type
time_t now;
// Update current time using time(&now);
time(&now);

FILE * logFilePtr;

logFilePtr = fopen ("C:\\log.txt", "a");
if (logFilePtr != NULL)
{
fprintf(logFilePtr, ("%s", ctime(&now)));
fprintf(logFilePtr, "%s", logMessagePtr);
fprintf(logFilePtr,"\n");
fclose(logFilePtr);
printf("Log file found\n"); //debug
}
else
{
perror("log.txt");
}
}

log.txt 文件已成功附加(创建),但在时间写入文件后我始终得到一个新的换行符。

例如,当我连续运行该程序两次时,log.txt 会显示:

Sat May 22 09:16:47 2021
**********RESTART**********
Sat May 22 09:16:48 2021
**********RESTART**********

我想要的是:

Sat May 22 09:16:47 2021 **********RESTART**********
Sat May 22 09:16:48 2021 **********RESTART**********

有关 time.h 的信息

最佳答案

ctime(3) - Linux man page说:

The call ctime(t) is equivalent to asctime(localtime(t)). It converts the calendar time t into a null-terminated string of the form
"Wed Jun 30 21:49:08 1993\n"

看起来ctime()的规范中包含了添加换行符。您应该使用 strftime()手动格式化日期和时间,不带换行符。

char date[128];
strftime(date, sizeof(date), "%a %b %d %T %Y", localtime(&now));
fprintf(logFilePtr, "%s", date);

关于c - 将 fprintf 与 time.h 一起使用时避免换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67644746/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com