0

我正在尝试制作一个可以设置多次的闹钟。这是代码

std::cout<<"Enter the link: ";
        std::string link;
        std::cin>>link;
        std::cout<<"\n\nProccessing...";

        loop3: //Keep getting the time until everything adds up...

        time_t s=time(0); //Getting ready for time
        tm t=*localtime(&s); //Getting time put into Variable t

        for(int i=0;i<n;i++){
            if (hour[i] != t.tm_hour){
                goto loop3;
            }

            if (min[i] != t.tm_min){
                goto loop3;
            }

            ShellExecute(NULL, "open", link.c_str(), NULL, NULL, SW_SHOWNORMAL);
        }

我希望它会在 n 中打开确切的输入次数,但据我了解,当他执行 ShellExecute 命令时,它会回到循环的开头,检查时间并且时间仍然相同,因此他执行命令再次。这样一来,它就类似于那一分钟的无限循环。

那么,有没有办法解决这个问题?他执行命令的那一刻,他只会执行一次,然后继续前进?我希望你能理解我的解释。

4

1 回答 1

1

你想那样做吗?

time_t s;
tm t;

for(int i=0;i<n;){
    s=time(0); //Getting ready for time
    t=*localtime(&s); //Getting time put into Variable t

    if (hour[i] != t.tm_hour){
        continue;
    }

    if (min[i] != t.tm_min){
        continue;
    }

    ShellExecute(NULL, "open", link.c_str(), NULL, NULL, SW_SHOWNORMAL);
    i++;
}
于 2012-06-23T13:29:01.063 回答