2012-11-05 79 views
1

用C,我有以下時間字符串:如何創建整數

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

輸出應該是以下;

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

回答

4

使用snprintf()如果你擁有它,否則sprintf()

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

請注意,您的緩衝區太小,需要兩個+兩臺+兩臺對於數字,再加兩個冒號,加上終止符的最後一個字符。所以它至少應該是char time[9];。如果使用snprintf(),它將正確截斷並且不會導致緩衝區溢出,但sprintf()將會失敗。

+0

謝謝你,我不知道的sprintf可以有更多然後3個參數。 – dare2k

+0

@ dare2k這是一個不同的功能,請注意開頭的* n *。 'snprintf()'與'sprintf()'不同。當然,兩者都可以接受任意數量的參數,因爲它們使用可變參數。 – unwind

2

您可以使用:

sprintf(time, "%02d:%02d:%02d", hour, minute, second); 
printf("%s",time); 
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.

+0

我正在使用GNU,並與itoa有問題。 – dare2k