获取当前时间C,功能

时间:2013-04-11 09:06:43

标签: c time

我想在C中获取当前时间(没有当前日期)。主要问题是当我想要使用函数时。当我不使用它们时,evertyhing就好了。任何人都可以告诉我,为什么我的代码只显示一个小时? (看一下附图)。提前谢谢。

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

char* get_time_string()
{
    struct tm *tm;
    time_t t;
    char *str_time = (char *) malloc(100*sizeof(char));
    t = time(NULL);
    tm = localtime(&t);
    strftime(str_time, sizeof(str_time), "%H:%M:%S", tm);
    return str_time;
}

int main(int argc, char **argv)
{
    char *t = get_time_string();
    printf("%s\n", t);
    return 0;
}

enter image description here

5 个答案:

答案 0 :(得分:7)

sizeof(str_time)为您提供char*的大小。您希望缓冲区str_time的大小指向。尝试

strftime(str_time, 100, "%H:%M:%S", tm);
//                 ^ size of buffer allocated for str_time

其他小问题 - 您应该包含<stdlib.h>来获取malloc的定义,并在free(t)打印其内容后main

答案 1 :(得分:4)

sizeof运算符返回变量str_time的长度,该变量是char的指针。它不会返回动态数组的长度。

sizeof(str_time)替换为100,一切正常。

答案 2 :(得分:0)

试试这个......

int main ()
 {
  time_t rawtime;
  struct tm * timeinfo;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  printf ( "Current local time and date: %s", asctime (timeinfo) );

  return 0;
}

答案 3 :(得分:0)

使用此概念获取系统时间并更新它。多年前我在我的项目中使用过它。你可以根据你的要求改变它。

updtime()                 /* FUNCTION FOR UPDATION OF TIME */
{
 struct time tt;
 char str[3];
 gettime(&tt);
 itoa(tt.ti_hour,str,10);
 setfillstyle(1,7);
 bar(getmaxx()-70,getmaxy()-18,getmaxx()-30,getmaxy()-10);
 setcolor(0);
 outtextxy(getmaxx()-70,getmaxy()-18,str);
 outtextxy(getmaxx()-55,getmaxy()-18,":");
 itoa(tt.ti_min,str,10);
 outtextxy(getmaxx()-45,getmaxy()-18,str);
return(0);
}
The previous function will update time whenever you will call it like 

and this will give you time

 int temp;
 struct time tt;
 gettime(&tt);                       /*Get current time*/
 temp = tt.ti_min;

如果您想更新时间,可以使用以下代码。

   gettime(&tt);
   if(tt.ti_min != temp)  /*Check for any time update */
   {
    temp = tt.ti_min;
    updtime();
   }

这是一个复杂的代码,但如果您理解它,那么它将解决您的所有问题。

享受:)

答案 4 :(得分:0)

在抽出时间时,你可以试试这个:

#include <stdio.h>

int main(void)
{
  printf("Time: %s\n", __TIME__);
  return 0;
}

结果:

时间:10:49:49