How to access the fields of a timeval structure

后端 未结 4 554
说谎
说谎 2021-01-06 08:51

I\'m trying to print the values in a struct timeval variable as follows:

int main()  
{  

    struct timeval *cur;  
    do_gettimeofday(cur);          


        
相关标签:
4条回答
  • 2021-01-06 08:58

    Because cur is a pointer. Use

    struct timeval cur;
    do_gettimeofday(&cur);
    

    In Linux, do_gettimeofday() requires that the user pre-allocate the space. Do NOT just pass a pointer that is not pointing to anything! You could use malloc(), but your best bet is just to pass the address of something on the stack.

    0 讨论(0)
  • 2021-01-06 09:01

    You need to use the -> operator rather than then . operator when accessing the fields. Like so: cur->tv_sec.

    Also you need to have the timeval structure allocated. At the moment you are passing a random pointer to the function gettimeofday().

    struct timeval cur;
    gettimeofday(&cur);
    printf("%ld.%ld", cur.tv_sec, cur.tv_nsec);
    
    0 讨论(0)
  • 2021-01-06 09:03

    You need to include sys/time.h instead of time.h, struct timeval is defined in /usr/include/sys/time.h and not in /usr/include/time.h.

    0 讨论(0)
  • 2021-01-06 09:12

    The variable cur is a pointer of type timeval. You need to have a timeval variable and pass it's address to the function. Something like:

    struct timeval cur;
    do_gettimeofday(&cur);
    

    You also need

    #include<linux/time.h>
    

    which has the definition of the struct timeval and declaration of the function do_gettimeofday.

    Alternatively you can use the gettimeofday function from sys/time.h.

    Working link

    0 讨论(0)
提交回复
热议问题