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コマンドを実行すると、ループの最初に戻って時間をチェックし、時間が同じであるため、コマンドを実行します。また。そうすれば、その正確な1分間の無限ループに似たものになります。

それで、これを修正する方法はありますか?彼がコマンドを実行した瞬間、彼は一度だけそれを実行し、それから移動しますか?私の説明をご理解いただければ幸いです。

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 に答える