Pointeur en C

James -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

j'ai un soucis avec les pointeurs..

Je récupère actuellement une date à partir de "st_mtime" qui est sous forme de secondes.

Je veux donc la convertir en vrai date avec

	
char *ctime(const time_t *timep);

Elle retourne donc un char

Dans mon programme, j'indique donc :

struct stat S;  // S est une structure de type stat
time_t *madate = &S.st_mtime;
ctime(madate);
print("La date est : %ld", *datemodif);


Mais j'obtiens le même résultat que si je fais :
struct stat S;  // S est une structure de type stat
print("La date est :%ld", S.st_mtime);


Je dois mal utiliser mon pointeur je suppose ?

Merci pour votre aide.
Configuration: Linux
Firefox 3.0.3

3 réponses

  1. James
     
    oups,

    ce n'est pas

    print("La date est : %ld", *datemodif);
    


    mais

    print("La date est : %ld", *madate);
    
    0
  2. loupius
     
    A quoi sert ton:
    ctime(madate); qui retourne une valeur une tu ne récupères pas ???
    Il serait plus logique d'écrire:<code>printf ("La date est : %s", ctime(S.st_mtime));
    0
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Il vaut mieux utiliser ctime_r que ctime (qui est obsolète car pas compatible multithread). Il faut alors passer un buffer d'au moins 26 char comme indiqué ici :
    http://manpages.courier-mta.org/htmlman3/ctime.3.html

    D'où le code :
    #include <time.h>
    #include <stdio.h>
    
    int main(){
        char buffer[26];
        time_t t = 1234567890;
        if(ctime_r(&t,buffer)){
            printf("date = %s",buffer);
        }
        return 0;
    }
    

    Ce qui donne :
    (mando@aldur) (~) $ gcc -W -Wall plop.c
    (mando@aldur) (~) $ ./a.out
    date = Sat Feb 14 00:31:30 2009

    Bonne chance
    0