pb fonction date dans structure tm
Bonjour,
J'ai réalisé une fontion qui découpe une date au format YYYY-MM-DDTHH:MM:SS.sss et range les éléments dans une structure tm. Cette fonction marche, elle est codée comme suit:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| struct tm *fDateT_To_Struct(char *strdate) {
static struct tm returndate;
sscanf(strdate,"%4d-%2d-%2dT%2d:%2d:%2d.%3d",&(returndate.tm_year)
,&(returndate.tm_mon)
,&(returndate.tm_mday)
,&(returndate.tm_hour)
,&(returndate.tm_min)
,&(returndate.tm_sec)
,&(returndate.tm_isdst));
returndate.tm_wday = 0;
returndate.tm_yday = 0;
return &returndate ;
} |
Maintenant, je souhaite inclure un code de retour d'erreur RetCode à ma fonction. J'ai modifié ma fonction comme suit:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| RetCode fDateT_To_Struct(char *strdate, struct tm *st_dateStruct) {
RetCode retCode;
int i=0;
static struct tm returndate;
i = sscanf(strdate,"%4d-%2d-%2dT%2d:%2d:%2d.%3d"
,&(returndate.tm_year)
,&(returndate.tm_mon)
,&(returndate.tm_mday)
,&(returndate.tm_hour)
,&(returndate.tm_min)
,&(returndate.tm_sec)
,&(returndate.tm_isdst));
returndate.tm_wday = 0;
returndate.tm_yday = 0;
st_dateStruct = &returndate;
if (i<0) goto error;
else goto fin;
error:
retCode = NOK;
fin:
retCode = OK;
return(retCode);
} |
Mais lorsqu'un j'appelle ma fonction, cela ne marche plus!
(bout de code du main:)
Code:
1 2 3 4 5 6 7 8
| struct tm *pt_Str;
char carac[25];
RetCode retcode; /*RetCode type prédéfini: accepte OK ou NOK*/
strcpy(carac, "2002-11-03T23:45:01.556");
retCode = fDateT_To_Struct(carac, pt_Str);
printf("pt_Str-> tm_year: %d\n",pt_Str->tm_year); /*par exemple*/ |
Il y a une erreur à l'exécution:
Code:
1 2
| signal SEGV (no mapping at the fault address) in main at line 111 in file "mon_fichier.c"
111 printf("pt_Str-> tm_year: %d\n",pt_Str->tm_year); |
Je ne maîtrise pas bien les pointeurs de structure. Quelqu'un aurait-t-il une idée?
Merci beaucoup
Sandra