用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);
請注意,您的緩衝區太小,需要兩個+兩臺+兩臺對於數字,再加兩個冒號,加上終止符的最後一個字符。所以它至少應該是char time[9];
。如果使用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.
我正在使用GNU,並與itoa有問題。 – dare2k
謝謝你,我不知道的sprintf可以有更多然後3個參數。 – dare2k
@ dare2k這是一個不同的功能,請注意開頭的* n *。 'snprintf()'與'sprintf()'不同。當然,兩者都可以接受任意數量的參數,因爲它們使用可變參數。 – unwind