2012-06-23 138 views
0

我試圖做一個鬧鐘,您可以在其中設置多次。這裏的C++鬧鐘,循環問題

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命令,檢查時間和時間仍然是一樣的,所以他再次執行命令。那樣的話,它就會得到類似於那一刻的無盡循環。

那麼,有沒有辦法解決這個問題?他執行命令的那一刻,他只會一次,然後移動?我希望你能理解我的解釋。

+0

避免'goto',只是總是。你的代碼看起來很奇怪。你讀了一些'link',但從不使用它。你也沒有向我們展示'n','hour []'和'min []'在哪裏聲明。現在代碼不能很好地幫助你。 –

+1

避免不當使用gotos。永遠不會回來。 –

回答

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++; 
} 
+0

確切地說,謝謝 – RnD