我在文本文件中插入时间时遇到问题。我使用下面的代码,我得到了|21,43,1,3,10,5| Wed Feb 01 20:42:32 2012
,这是正常的,但我想做的是把时间放在数字之前,例如Wed Feb 01 20:42:32 2012 |21,43,1,3,10,5|
,但是,我不能这样做,因为当我在fprintf之前使用fprintf和ctime函数时,它识别ctime中的\n,所以它改变了第一行,然后打印数字。它是这样的:
Wed Feb 01 20:42:32 2012
|21,43,1,3,10,5|
这是我不想要的东西……我如何在不切换到文本中的下一行的情况下fprintf时间???提前感谢!
fprintf(file," |");
for (i=0;i<6;i++)
{
buffer[i]=(lucky_number=rand()%49+1); //range 1-49
for (j=0;j<i;j++)
{
if (buffer[j]==lucky_number)
i--;
}
itoa (buffer[i],draw_No,10);
fprintf(file,"%s",draw_No);
if (i!=5)
fprintf(file,",");
}
fprintf(file,"| %s",ctime(&t));
9条答案
按热度按时间lstz6jyr1#
您可以使用
strftime()
和localtime()
的组合来创建时间戳的自定义格式化字符串:ctime
使用的格式字符串就是"%c\n"
。ql3eal8s2#
您可以使用
strtok()
将\n
替换为\0
。下面是一个最小的工作示例:输出:
gstyhher3#
只需使用%.19s:
velaa5lx4#
1.将
ctime()
的返回值复制到一个临时字符串,从该临时字符串中删除'\n'
,然后打印该临时字符串。1.使用printf转换的(字段宽度和)精度,仅打印
ctime()
返回的前24个字符。hlswsv355#
在C++11中,你可以这样做:
输出:
2017-06-05 00:31:49
pkbketx96#
怎么样:
这样,它只打印字符串减去最后一个字符(即
\n
)。hmae6n7t7#
我在获得ctime字符串后这样做了:
这只是用一个字符串终止字符覆盖了ctime回车符,有效地用两个'\0'字符而不是一个字符终止字符串。(ctime一开始就这么做似乎很奇怪。)
nc1teljy8#
只需将'length - 1'字节复制到另一个字符串。
b1uwtaje9#
简单地说:
这实际上会做的是用null-terminal字符替换ctime数组的strlen - 1字符(在这种情况下是新的一行字符)-它从结束'\n'处删除新的一行字符并缩短1个字符的数组。
如果strlen之前是25,那么之后应该是24。