Pointeur en C

Fermé
James - 18 avril 2009 à 19:16
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 - 19 avril 2009 à 01:59
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.

3 réponses

oups,

ce n'est pas

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


mais

print("La date est : %ld", *madate);
0
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
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
19 avril 2009 à 01:59
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