如何在C程序中的“ ctime”之后删除换行符?

hil*_*llz -1 c

因为我还是C编程的新手,所以请多多包涵。当我运行此代码时:

#include <time.h>
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    while (1) {
        time_t mytime;
        mytime = time(NULL);
        printf("%s Hello world\n", ctime(&mytime));
        sleep(1);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出总是看起来像这样:

Wed Jan 18 02:32:32 2017
 Hello world
Wed Jan 18 02:32:33 2017
 Hello world
Wed Jan 18 02:32:34 2017
 Hello world
Run Code Online (Sandbox Code Playgroud)

我想要的是这样的:

Wed Jan 18 02:32:32 2017 Hello world
Wed Jan 18 02:32:33 2017 Hello world
Wed Jan 18 02:32:34 2017 Hello world
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点 ?

注意:如果我将其删除\nprintf("%s Hello world\n", ctime(&mytime));则会得到以下结果:

Wed Jan 18 02:38:29 2017
 Hello worldWed Jan 18 02:38:30 2017
 Hello worldWed Jan 18 02:38:31 2017
 Hello worldWed Jan 18 02:38:32 2017
 Hello worldWed Jan 18 02:38:33 2017
Run Code Online (Sandbox Code Playgroud)

dbu*_*ush 5

ctime函数将返回指向以换行符结尾的字符串的指针。

手册页

该呼叫ctime(t)等效于asctime(localtime(t))。它将日历时间t转换为以“ Wed Jun 30 21:49:08 1993 \ n”形式的空终止字符串。

如果您不想换行,则需要在打印之前保存指针并删除换行。

char *t = ctime(&mytime);
if (t[strlen(t)-1] == '\n') t[strlen(t)-1] = '\0';
printf("%s Hello world\n", t);
Run Code Online (Sandbox Code Playgroud)