我正在尝试打印时间戳和int值:543
我认为格式问题,
char buffer [50];
sprintf (buffer, "Time : %d , ID %d",time(0),543);
它打印时间戳正确但ID为0
答案 0 :(得分:1)
您正在使用%d打印time_t
,假设time_t
是int
。这可能不是真的,它可能是另一个更大的类型 - 它甚至被允许成为一个浮点类型,这会导致麻烦,因为你已经承诺printf你传入了一个int。 / p>
没有用于打印time_t的printf格式说明符,但您可以将其转换并打印为long long,这对于使用整数类型的time_t的64位或更少的平台是可以的(这是大多数平台):
sprintf (buffer, "Time : %lld , ID %d",(long long)time(0),543);
答案 1 :(得分:0)
更好的方法是使用ctime
将time_t
转换为字符串并打印出来。
或者,您可以使用time_t
或struct tm
将所需信息从gmtime
提取到localtime
并打印成员或strftime
struct tm
time_t
1}}并将时间打印为字符串。
C标准指定time_t
是实数,因此它可以是整数或浮点值(C11:6.2.5.17)因此,如果必须打印%lld
值,则可以使用{ {1}}(很长)或%Lf
(长双)打印它。