我们需要使用gettime()
来获取当前时间。我正在尝试打印当前时间但错误:
错误:'t'的存储大小未知
发生。我不知道如何解决这个问题。这是代码:
#include<stdio.h>
#include<dos.h>
int main(){
struct time t;
gettime(&t);
printf("%d:%d:%d", t.ti_hour,t.ti_min,t.ti_sec);
getch();
return 0;
}
答案 0 :(得分:1)
不清楚是要获取时间还是只是打印时间。
对于第二种情况,很少有传统方法可以提供格式化时间(asctime,ctime)。但是这些可能不符合要求
更灵活的选择是基于time / localtime_r中的数据使用strftime
。 strftime支持GNU日期可用的许多转义符(%Y,...)。
#include <stdio.h>
#include <time.h>
void main(void)
{
time_t now = time(NULL) ;
struct tm tm_now ;
localtime_r(&now, &tm_now) ;
char buff[100] ;
strftime(buff, sizeof(buff), "%Y-%m-%d, time is %H:%M", &tm_now) ;
printf("Time is '%s'\n", buff) ;
}
答案 1 :(得分:0)
获取本地时间的标准C函数只是time
,包含在标题time.h中
取自here。
的示例/* time example */
#include <stdio.h> /* printf */
#include <time.h> /* time_t, struct tm, difftime, time, mktime */
int main ()
{
time_t timer;
struct tm y2k = {0};
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;
time(&timer); /* get current time; same as: timer = time(NULL) */
seconds = difftime(timer,mktime(&y2k));
printf ("%.f seconds since January 1, 2000 in the current timezone", seconds);
return 0;
}
有关不同时间格式的更多信息:
答案 2 :(得分:0)
好吧,您正在尝试使用DOS.H库,因此由于DOS.time.h和ctime库不适用于此特定问题,因为DOS.H是专有的C库,您不能在任何其他C语言中使用它(C ++或C#),请在阅读本文后阅读该库,这样您就可以清楚地看到我在说什么,因此在DOS.H库中是一个STRUCT,可用于保存所有时间变量,这是小时,分钟,秒,所以我们要做的第一件事就是声明一个变量,该变量允许我们保存这种类型的数据:
结构时间tm;
一旦执行此操作,就可以使用库中的gettime()函数,以将que值保存在我们可以访问的位置:
gettime(&tm);
最后,要打印出o,并在任何需要的地方使用此数据,您需要获取结构的每个寄存器:
printf(“系统时间为:%d:%d:%d \ n”,tm.ti_hour,tm.ti_min,tm.ti_sec);
检查此代码:
#include<stdio.h>
#include<dos.h>
#include<conio.h>
int main()
{
struct date fecha;
struct time hora;
union REGS regs;
getdate(&fecha);
printf("La fecha del sistema es: %d / %d / %d\n",fecha.da_day,fecha.da_mon,fecha.da_year);
regs.x.cx = 0x004c;
regs.x.dx = 0x4b40;
regs.h.ah = 0x86; /* 004c4b40h = 5000000 microsegundos */
int86(0x15,®s,®s); /* Interrupcion 15h suspension de sistema */
gettime(&hora);
printf("la hora del sistema es: %d : %d : %d\n",hora.ti_hour,hora.ti_min,hora.ti_sec);
getche();
clrscr();
return 0;
}