为什么这个文字在线?

时间:2012-03-09 03:05:05

标签: c timestamp printf

我有用于创建时间戳的代码: 代码在C中。

void timestamp()
{
    time_t ltime; /* calendar time */
    ltime=time(NULL); /* get current cal time */
    printf("%s Something\n",asctime( localtime(&ltime) ) );
}

为什么下一行的文字“Something”?我该怎么办才能把它放在同一条线上? 我很困惑,因为我没有在%s之后,所以它应该在同一条线上,但事实并非如此。 THX。

4 个答案:

答案 0 :(得分:4)

退房 的 asctime()

  

该字符串后跟一个换行符('\ n')和终止空字符。

答案 1 :(得分:3)

asctime规范(C99§7.23.3.1/ 2)内容如下:

#include <time.h>
char *asctime(const struct tm *timeptr);
     

asctime函数转换指向的结构中的细分时间   timeptr成为

形式的字符串
Sun Sep 16 01:03:52 1973\n\0

请注意结尾处的换行符。

如果您不希望新换行符合时间,则需要自行删除换行符或使用其他库函数,例如strftime

答案 2 :(得分:0)

是因为你在“Something”这个词之后有一个回车符(\n)转义符号吗?这将创建一个新行,它将在下一行放置任何后续信息,将“Something”留在自己的行上。

答案 3 :(得分:0)

请使用以下功能执行自定义格式,其他转换会自动添加换行符:

strftime function description