6

新程序员来了。就像超级新的一样。我正在尝试为我父亲的生日编写一个程序。

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

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

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

提前致谢

4

2 回答 2

1

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

您需要执行的步骤:

  1. 获取当前时间(c_time)
  2. 获取你爸爸的生日时间
  3. (b_time) 检查 c_time 是否大于 b_time。

这是一个示例程序:

#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 教程,一切都会变得清晰。我希望你有足够的时间;)

于 2013-11-05T10:26:33.970 回答
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文件,他会看到网页的地址(但不容易看到打开这个页面的条件是什么)。

于 2013-11-05T10:30:32.093 回答