暂停执行直到C中的特定时间

时间:2013-11-05 10:15:41

标签: c time

新程序员在这里。像超级新人。我正在为我爸爸的生日写一个程序。

#include <stdio.h>
#include <time.h>

int main()
{
    int CurrentTime;
    system("start https://www.youtube.com/watch?v=FchMuPQOBwA");
    return 0;
}

到目前为止,我有这个。我怎么做才能让他在生日或特定时间之前无法打开它?在time.h中查看并搜索了一下,但我似乎无法找到解决方案。另外我如何将它发送给他所以它只是一个.exe而且他看不到代码?

提前致谢

2 个答案:

答案 0 :(得分:1)

在“time()”函数的引用中,您需要使用所有函数的示例。 http://www.cplusplus.com/reference/ctime/time/

您需要做的步骤:

  1. 获取当前时间(c_time)
  2. 获取父亲生日的时间
  3. (b_time)检查c_time是否大于b_time。
  4. 以下是一个示例程序:

    #include <stdio.h>      /* printf */
    #include <time.h>       /* time_t, struct tm, difftime, time, mktime */
    
    int main ()
    {
      time_t c_time, b_time;
      struct tm b_date;
      double seconds;
    
      y2k.tm_hour = 0;   y2k.tm_min = 0; y2k.tm_sec = 0;
      y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1; //January first, 2000. I'll let you change that because I don't know when's the big day.
    
      time(&c_time);  /* get current time; same as: timer = time(NULL)  */
      b_time = mktime(&b_date);
    
      seconds = difftime(c_time,b_time);
    
      if(seconds < 0) //negative difference means c_time > b_time
      {
        //do stuff
      }
    
      return 0;
    }
    

    现在,如果你是一个完全的初学者,这里的一些东西有点难以理解。我只能建议您阅读一本好的C教程,一切都会变得清晰。我希望你有足够的时间;)

答案 1 :(得分:1)

在Windows上(因为您似乎使用该操作系统),您可以执行以下操作:

#include <windows.h>
#include <stdio.h>

/* The date on which this program should continue running */
#define DAY   10
#define MONTH 12  /* 1 = Jan... 12 = Dec */

int main()
{
    SYSTEMTIME t;

    GetLocalTime(&t);
    if (t.wDay != DAY || t.wMonth != MONTH) {
        printf("You can't open this program today!\n");
        MessageBox(0, "You can't open this program today!", "Error", MB_ICONSTOP);
        return 1;
    }

    system("start https://www.youtube.com/watch?v=FchMuPQOBwA");
    return 0;
}

GetLocalTime()函数和SYSTEMTIME结构在windows.h中,因此需要包含它。

或者使用time.h中的time()函数,但在这种情况下,您需要将所需的日期转换为UNIX时间戳(请参阅http://en.wikipedia.org/wiki/Unix_time),或将time()返回的信息转换为日/月

这是一个仅在特定日期运行的简单程序,如果没有,则退出并显示错误消息。如果你想在程序运行时安装一个安装在他计算机上的程序,然后在打开网页之前等待特定的时间,那就复杂得多(你基本上必须在系统的某个地方复制EXE文件,并且将它添加到注册表中,以便它在登录时自动运行...可能不超过30行代码,但不是最简单的代码;-))。

要将它作为EXE发送,所以他没有看到源代码,好吧,你只需编译它就好像要运行它,然后将EXE发送给他(确保它不需要来自编译器的运行时库,检查另一台PC是否正常运行)。当然,如果你的父亲用一些编辑器查看EXE文件,他会看到网页的地址(但不容易看到打开这个页面的条件)。