を使用して作成: 「3日午後12時15分07秒」または「午後12時15分07秒で」ケース日間でそう0の表示時刻文字列は、私はこのフォームで文字列を表示したいasprintf
されるI
lease time = in 3 days 00:
in 3 days 00:15:07
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);
}
私はコンソールでこの出力を取得し、次のようにいくつかのコードを書きました。私はそれを2番目に表示されたメッセージの結果のようにしたい。
誰かが私が間違っていたアイデアはありますか?
prefixhoursが0の場合、%cとして印刷することはできません。内部的に文字列は終了します。 – rustyx
@RustyXだからあなたは何を解決策として提案しますか? –
@RustyXいいえ私はあなたが望むものをよく理解していなかったと思うprefixseconds = 0それは文字がないので、秒> = 10だから秒数の前に0を追加する必要はありません。 –