Я хочу сделать код для синхронизации часов сейчас и целевых часов, но код печатает те же часы, что и при первом запуске при использовании while.
#include <iostream>
#include <string>
#include <sstream>
#include <ctime>
using namespace std;
int main(){
time_t now = time(0);
tm *ltm = localtime(&now);
do{
if (ltm->tm_sec > 60){
cout << "ok : " << ltm->tm_sec << endl;
break;
} else {
cout << "ok : " << ltm->tm_sec << endl;
continue;
}
}while (ltm->tm_sec <= 60);
}
Я ожидаю, что теперь он будет печатать новые часы, но он будет печатать так же, как и при запуске кода.
Вам нужно обновить переменную now
и ltm
текущим временем внутри цикла do-while
.
Вы можете изменить свой код, как показано ниже:
#include <iostream>
#include <string>
#include <sstream>
#include <ctime>
using namespace std;
int main()
{
time_t now = time(0);
tm *ltm;
do
{
now = time(0);
ltm = localtime(&now);
if (ltm->tm_sec > 60)
{
cout << "ok : " << ltm->tm_sec << endl;
break;
}
else
{
cout << "ok : " << ltm->tm_sec << endl;
continue;
}
}while (ltm->tm_sec <= 60);
return 0;
}
Надеюсь это работает!
Добро пожаловать @hmm15.
Вы никогда не обновляете
now
до текущей версии.