Salut, j'ai un problème avec une fonction de validité du date de format (JJ/MM/AAAA) cette dernière fonctionne en build target debugger mais pas en release voilà mon code
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
int str_to_long(const char *s, long *p)
{
    int ret = 0; /* code d'erreur 0 : succès. */
    if (*s == '\0')
        ret = 1; /* code d'erreur 1 : la chaine a convertir est vide. */
    else
    {
        char *end="";
        *p = strtol(s, &end, 10);
 
       if (errno != 0)
           ret = 2; /* code d'erreur 2 : la fonction strtol a rencontre une erreur. */
        else if (*end != '\0')
            ret = 3; /* code d'erreur 3 : la conversion a échoué car un caractère invalide a été détecté. */
    }
 
    return ret;
}
int valide(char *c)
{
    int day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    long n1;
    long n2;
    long n3;
    char c1[2];
    char c2[2];
    char c3[4];
    c1[0]=c[0];
    c1[1]=c[1];
    c1[2]='\0';
    int ret1 = str_to_long(c1, &n1);
    if (ret1 != 0)   return 0;
    c2[0]=c[3];
    c2[1]=c[4];
    c2[2]='\0';
    int ret2 = str_to_long(c2, &n2);
    if (ret2 != 0)   return 0;
    c3[0]=c[6];
    c3[1]=c[7];
    c3[2]=c[8];
    c3[3]=c[9];
    c3[4]='\0';
    int ret3 = str_to_long(c3, &n3);
    if (ret3 != 0)   return 0;
 
 
 
    if(c[2]!='/' || c[5]!='/' || c[10]!='\0') return 1;
 
    if(n3 % 400 == 0 || (n3 % 100 != 0 && n3 % 4 == 0))
        day[1]=29;
    if(n2>0 && n2<13 && n3>0)
    {
        if(n1>0 && n1<=day[n2-1])
        return 1;
    }
    return 0;
}