📅  最后修改于: 2023-12-03 14:55:10.231000             🧑  作者: Mango
如果你在编写 C 程序时需要使用到明确的时间,那么你会想要了解如何生成随机的时间。在 C 语言中,有很多方法可以在程式中生成随机时间。
time.h 库是一个常用的 C 语言标准库,它包含一些处理时间和日期的函数和宏。下面是一个使用 time.h 库生成随机时间的示例程序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL)); // 使用当前时间作为随机数种子
struct tm randTime = {0};
randTime.tm_mday = rand() % 31 + 1; // 随机生成日
randTime.tm_mon = rand() % 12; // 随机生成月份
randTime.tm_year = rand() % 120 + 1900; // 随机生成年份
randTime.tm_hour = rand() % 24; // 随机生成小时
randTime.tm_min = rand() % 60; // 随机生成分钟
randTime.tm_sec = rand() % 60; // 随机生成秒钟
printf("随机生成的时间:%d-%d-%d %d:%d:%d\n", randTime.tm_year, randTime.tm_mon, randTime.tm_mday, randTime.tm_hour, randTime.tm_min, randTime.tm_sec);
return 0;
}
在这段代码中,我们使用了 srand(time(NULL)) 函数来设置一个随机数种子,然后使用 rand() 函数来生成随机的日期、时间等信息。最后我们通过 printf() 函数将随机生成的时间输出。
如果你正在编写 Windows 应用程序,那么您可以使用 Windows API 中的 GetSystemTime() 函数来获取当前系统时间,然后将其转换为随机时间。下面是一个使用 Windows API 生成随机时间的示例程序:
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
int main()
{
srand(GetTickCount()); // 使用当前计时器计数作为随机数种子
SYSTEMTIME randTime = {0};
randTime.wDay = rand() % 31 + 1; // 随机生成日
randTime.wMonth = rand() % 12 + 1; // 随机生成月份
randTime.wYear = rand() % 120 + 1900; // 随机生成年份
randTime.wHour = rand() % 24; // 随机生成小时
randTime.wMinute = rand() % 60; // 随机生成分钟
randTime.wSecond = rand() % 60; // 随机生成秒钟
randTime.wMilliseconds = rand() % 1000; // 随机生成毫秒数
printf("随机生成的时间:%d-%d-%d %d:%d:%d:%d\n", randTime.wYear, randTime.wMonth, randTime.wDay, randTime.wHour, randTime.wMinute, randTime.wSecond, randTime.wMilliseconds);
return 0;
}
在这段代码中,我们使用了 GetTickCount() 函数来获取当前计时器计数,然后将其作为 srand() 函数的种子。然后我们使用 rand() 函数来生成随机的时间信息。最后我们通过 printf() 函数将随机生成的时间输出。
无论是使用 C 标准库的 time.h 库,还是使用 Windows API,都可以方便地生成随机的时间。在实际编程中,你需要根据实际需要来选择使用哪种方法。