我在C中有以下内容:
char time[8];
int hour= 5;
int minute = 4;
int second = 13;
输出应为以下内容;
Output:
"05:04:13" //printf("%s",time);
答案 0 :(得分:4)
如果有,请使用snprintf()
,否则sprintf()
:
snprintf(time, sizeof time, "%02d:%02d:%02d", hour, minute, second);
请注意,您的缓冲区太小,数字需要两个+两个+两个,冒号需要两个,加上终止的最后一个字符。所以它至少应该是char time[9];
。如果您使用snprintf()
,它将正确截断并且不会导致缓冲区溢出,但sprintf()
将失败。
答案 1 :(得分:2)
您可以使用:
sprintf(time, "%02d:%02d:%02d", hour, minute, second);
printf("%s",time);
答案 2 :(得分:0)
只是通过将int
转换为char
字符串来实现相同结果的替代(更长)方法。
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);
但要明确this函数是is not defined in ANSI-C and is not part of C++, but is supported by some compilers.