【发布时间】:2012-11-05 12:29:43
【问题描述】:
我在 C 中有以下内容:
char time[8];
int hour= 5;
int minute = 4;
int second = 13;
输出应该如下;
Output:
"05:04:13" //printf("%s",time);
【问题讨论】:
我在 C 中有以下内容:
char time[8];
int hour= 5;
int minute = 4;
int second = 13;
输出应该如下;
Output:
"05:04:13" //printf("%s",time);
【问题讨论】:
如果有,请使用snprintf(),否则使用sprintf():
snprintf(time, sizeof time, "%02d:%02d:%02d", hour, minute, second);
请注意,您的缓冲区太小,您需要 2 + 2 + 2 的数字,再加上两个冒号,再加上终止字符。所以至少应该是char time[9];。如果你使用snprintf(),它会正确截断,不会导致缓冲区溢出,但sprintf()会失败。
【讨论】:
snprintf() 与 sprintf() 不同。当然,两者都可以接受任意数量的参数,因为它们使用可变参数。
你可以使用:
sprintf(time, "%02d:%02d:%02d", hour, minute, second);
printf("%s",time);
【讨论】:
只是通过将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.
【讨论】: