我想在這種形式顯示一個字符串創建:在殼體天 「在3天內0點15分07秒」或「0點15分07秒」被0顯示時間字符串使用asprintf
所以我寫了一些代碼如下
#include<stdio.h>
#define LEASE_TIME_USING_DAYS "in %d days %c%d:%c%d:%c%d\n"
#define LEASE_TIME_NOTUSING_DAYS "in %c%d:%c%d:%c%d\n"
int main(){
int seconds, minutes, hours, days;
char *leasetime;
/* Just for test */
seconds = 7;
minutes = 15,
hours = 0;
days = 3;
/*End just for test*/
char prefixseconds, prefixminutes, prefixhours;
if(seconds<10) prefixseconds=48; else prefixseconds=0;
if(minutes<10) prefixminutes=48; else prefixminutes=0;
if(hours<10) prefixhours=48; else prefixhours=0;
if(days>0) asprintf(&leasetime,LEASE_TIME_USING_DAYS, days, prefixhours, hours, prefixminutes, minutes, prefixseconds, seconds);
else asprintf(&leasetime,LEASE_TIME_NOTUSING_DAYS, prefixhours, hours, prefixminutes, minutes, prefixseconds, seconds);
printf("lease time = %s\n", leasetime);
printf(LEASE_TIME_USING_DAYS, days, prefixhours, hours, prefixminutes, minutes, prefixseconds, seconds);
}
我得到這個產量在控制檯:
lease time = in 3 days 00:
in 3 days 00:15:07
我完全不知道爲什麼與asprintf創建的字符串(第一顯示信息)顯示在這種方式。我希望它像第二個顯示的消息的結果。
有沒有人有我的錯誤的想法?
prefixhours爲0,則無法將其打印爲%c。內部字符串被終止。 – rustyx
@RustyX那麼你提出什麼解決方案? –
@RustyX不,我認爲你不明白我想要的是什麼by prefixseconds = 0我的意思是它沒有字符,因爲它在這種情況下seconds> = 10因此沒有必要在秒數前加0 0 –