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:
Maintenant, je souhaite inclure un code de retour d'erreur RetCode à ma fonction. J'ai modifié ma fonction comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ; }
Mais lorsqu'un j'appelle ma fonction, cela ne marche plus!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
(bout de code du main
Il y a une erreur à l'exécution:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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*/
Je ne maîtrise pas bien les pointeurs de structure. Quelqu'un aurait-t-il une idée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
Merci beaucoup
Sandra
Partager