1

我在 C 中有以下内容:

char time[8];
int hour= 5;
int minute = 4;
int second = 13;

输出应如下所示;

Output:
"05:04:13" //printf("%s",time);
4

3 回答 3

4

snprintf()如果有就使用,否则sprintf()

snprintf(time, sizeof time, "%02d:%02d:%02d", hour, minute, second);

请注意,您的缓冲区太小,您需要 2 + 2 + 2 的数字,再加上两个冒号,再加上一个终止字符。所以至少应该是char time[9];。如果使用snprintf(),它将正确截断并且不会导致缓冲区溢出,但sprintf()会失败。

于 2012-11-05T12:31:07.227 回答
2

您可以使用:

sprintf(time, "%02d:%02d:%02d", hour, minute, second);
printf("%s",time);
于 2012-11-05T12:30:50.830 回答
0

只是通过转换intchar字符串来实现相同结果的另一种(更长)方法。

int hour= 5;
int minute = 4;
int second = 13;
char hr[3];
char min[3];
char sec[3];

itoa(hour, hr, 10);
itoa(minute, min, 10);
itoa(second, sec, 10);

printf("%s:%s:%s", hr,min,sec);

但只是为了说明这个功能是is not defined in ANSI-C and is not part of C++, but is supported by some compilers.

于 2012-11-05T12:42:35.410 回答