Récupérer la date et l'heure système

timeval est une structure que Code::Blocks reconnaît et qui est dans sys/time.h mais le compilateur ne l’a pas reconnue.
Voilà le log de la compilation:
C:\Documents and Settings\Matthias BERNIER\Mes documents\Projet C\Projet\Skipper\Suppl_Functions.c||In function Recuperation_Date_Heure':| C:\Documents and Settings\Matthias BERNIER\Mes documents\Projet C\Projet\Skipper\Suppl_Functions.c|38|error:timeval’ undeclared (first use in this function)|
C:\Documents and Settings\Matthias BERNIER\Mes documents\Projet C\Projet\Skipper\Suppl_Functions.c|38|error: (Each undeclared identifier is reported only once|
C:\Documents and Settings\Matthias BERNIER\Mes documents\Projet C\Projet\Skipper\Suppl_Functions.c|38|error: for each function it appears in.)|
C:\Documents and Settings\Matthias BERNIER\Mes documents\Projet C\Projet\Skipper\Suppl_Functions.c|38|error: syntax error before “Time”|
C:\Documents and Settings\Matthias BERNIER\Mes documents\Projet C\Projet\Skipper\Suppl_Functions.c|39|error: `Time’ undeclared (first use in this function)|
||=== Build finished: 5 errors, 0 warnings ===|

Un petit coup de google donne ceci :
http://www.cpp-programming.net/c-tidbits/gettimeofday-function-for-windows/

exemple ‘date_heure.c’:

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

int
main ( int argc, char *argv[] )
{
	time_t my_time;

	if (time (&my_time) == -1)
	{
		perror("time()");
		return EXIT_FAILURE;
	}

	printf("%s\n", asctime( localtime( &my_time)));
	return EXIT_SUCCESS;
}	

la compile et l’exe:

$make date_heure
gcc -lrt  date_heure.o   -o date_heure
$ ./date_heure 
Thu Dec 24 15:38:10 2009

il faut lier le code par la librt en faisant: -lrt quelque part dans codeblock.

En espérant que cela puisse t’aider… :smt111

Merci.
Je vais la tester dans le programme dès que j’aurais programmé la fonction qui nécessitera son utilisation.
Par contre, j’ai deux questions:

  1. Dans quel type de variable pourrais-je stocker la date renvoyée par ta fonction?
  2. Existe t-il une fonction retournant uniquement l’heure système?
    :smt114
#include    <stdio.h>
#include    <stdlib.h>
#include    <time.h>

int
main ( int argc, char *argv[] )
{
	time_t my_time;
	struct tm *mon_temps;

	if (time (&my_time) == -1)
	{
		perror("time()");
		return EXIT_FAILURE;
	}

	mon_temps = localtime(&my_time);
	printf("Mes secondes:%d\n", mon_temps->tm_sec);
	printf("Mes minutes:%d\n", mon_temps->tm_min);
	printf("Mes heures:%d\n", mon_temps->tm_hour);
    
	printf("%s\n", asctime( mon_temps));
	return EXIT_SUCCESS;
}	

résultat:

$ ./date_heure 
Mes secondes:25
Mes minutes:20
Mes heures:18
Tue Dec 29 18:20:25 2009

puisque tu as l’air largué, je fais même pour toi le man:

man localtime:

CTIME(3)                  Manuel du programmeur Linux                 CTIME(3)

NOM
       asctime,   ctime,   gmtime,   localtime,  mktime,  asctime_r,  ctime_r,
       gmtime_r, localtime_r - Convertir des dates  et  des  temps  au  format
       année/mois/jours ou au format ASCII

SYNOPSIS
       #include <time.h>

       char *asctime(const struct tm *tm);
       char *asctime_r(const struct tm *tm, char *buf);

       char *ctime(const time_t *timep);
       char *ctime_r(const time_t *timep, char *buf);

       struct tm *gmtime(const time_t *timep);
       struct tm *gmtime_r(const time_t *timep, struct tm *result);

       struct tm *localtime(const time_t *timep);
       struct tm *localtime_r(const time_t *timep, struct tm *result);

       time_t mktime(struct tm *tm);

...
       La représentation humaine (« broken-down time ») est stockée  dans  une
       structure tm, définie dans <time.h> comme suit :

           struct tm {
               int tm_sec;      /* secondes */
               int tm_min;      /* minutes */
               int tm_hour;     /* heures */
               int tm_mday;     /* jour du mois */
               int tm_mon;      /* mois */
               int tm_year;     /* année */
               int tm_wday;     /* jour de la semaine */
               int tm_yday;     /* jour de l’année */
               int tm_isdst;    /* décalage horaire */
           };
...
VOIR AUSSI
       date(1),  gettimeofday(2),  time(2),  utime(2),  clock(3), difftime(3),
       strftime(3), strptime(3), timegm(3), tzset(3), time(7)

...

:smt111

Merci.