タイムリミットを求める。コードを書きたいのですが。
09:23:24分に実行させるコードのタイムリミットを求めるにはどうしたいいのでしょうか?
現在時刻が09:14;53だとして
00:08:31秒→00:08:30秒→00:08:29秒→とカウントダウンするようにするには
どうしたらいいのでしょうか?
時刻の引き算のコードの書き方だけでもいいので
どなたか教えて頂けませんでしょうか?
宜しくお願いします。
秒に変換してやれば差を求めるのは簡単ですよね。
00:08:31
の形式にしたいのですが。
頭かたすぎ
表示のときに秒からHH:MM:SSの形にすればいい
#include <time.h>
#include <stdio.h>
// 時分秒の計算
#define HMS(h,m,s) ((h)*3600+(m)*60+(s))
#define tmHMS(tm) HMS((tm).tm_hour,(tm).tm_min,(tm).tm_sec)
// メイン関数
int main( void )
{
struct tm tmLimit;
struct tm tmClock;
int timeLimit;
int timeClock;
int exitFlag;
time_t t;
// 実行時刻の設定
tmLimit.tm_hour = 9;
tmLimit.tm_min = 23;
tmLimit.tm_sec = 24;
timeLimit = tmHMS( tmLimit );
do {
// 現在時刻の取得
time( &t );
tmClock = *localtime( &t );
timeClock = tmHMS( tmClock );
// 差の計算
timeClock = timeLimit - timeClock;
// 表示
printf( "%02d:%02d:%02d\r",
((timeClock / 3600) % 24),
((timeClock / 60) % 60),
((timeClock / 1) % 60) );
// 終了フラグの設定
exitFlag = (tmClock.tm_hour == tmLimit.tm_hour);
exitFlag &= (tmClock.tm_min == tmLimit.tm_min);
exitFlag &= (tmClock.tm_sec == tmLimit.tm_sec);
} while ( !exitFlag );
return 0;
}
/*
http://wisdom.sakura.ne.jp/programming/c/c60.html
*/
終了条件はtimeClockがゼロなら実行時間と見ればよかった。
do {
// 現在時刻の取得
time( &t );
tmClock = *localtime( &t );
timeClock = tmHMS( tmClock );
// 差の計算
timeClock = timeLimit - timeClock;
// 表示
printf( "%02d:%02d:%02d\r",
((timeClock / 3600) % 24),
((timeClock / 60) % 60),
((timeClock / 1) % 60) );
} while ( timeClock != 0 );
終了条件はtimeClockがゼロなら実行時間と見ればよかった。
またはtimeClockがゼロ以上ならループする条件にする。
do {
// 現在時刻の取得
time( &t );
tmClock = *localtime( &t );
timeClock = tmHMS( tmClock );
// 差の計算
timeClock = timeLimit - timeClock;
// 表示
printf( "%02d:%02d:%02d\r",
((timeClock / 3600) % 24),
((timeClock / 60) % 60),
((timeClock / 1) % 60) );
} while ( timeClock != 0 );
無事解決しました!
お答えしてくださったみなさまありがとうございます!
ツイート | ![]() |