Bonjour,

s'il vous plaît j'ai un problème avec un code que j'essaye d'écrire. Le but de ce code est le suivant : on lui écrit une date par exemple 07 12 2016 et il répond par : le 7 Décembre 2016. Le problème c'est que quand j'initialise la variable langue par 1 ou par 2 ça fonctionne très bien, mais quand je veux demander à l'utilisateur de choisir la langue (Français ou Anglais) en utilisant scanf() ça ,ne fonctionne pas.

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define TAILLE_MAX 100
 
int main()
{
    //=========On initialise deux tableaux de mois en francais et en anglais============
    char MFRAN[12][20]={"Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"};
    char MENG[12][20]={"Junuary","February","March","April","May","June","July","August","September","October","November","December"};
 
    printf("Choisissez une langue\n1-Francais\n2-Anglais\n");
 
    int langue=2;   /* C'est ici que j'ai le problème, si je demande à l'utilisateur de choisir la langue avec scanf()
     ça fonctionne pas, pour l'instant si on veut le francais on initialise langue par 1 si on veut anglais on l'initialise
     par 2*/
 
    if(langue == 1){
           char date[TAILLE_MAX]={0};
           printf("Entrez une date comme l'exemple suivant : 09 04 1996\n");
           scanf("%[^\n]",date);            //J'utilise le [^\n] pour pouvoir stocker l'éspace
           char mois[2],Mois=0;
           int moisInt=0,MoisInt=0,test=0;
           //=====J'effectue un teste si le mois s'écrit 02 par exemple  ou bien 11========
           if (date[3]!='0')
           {
               mois[0]=date[3];
               mois[1]=date[4];
               moisInt = atoi(mois);
               test=1;
 
           }
           else if (date[3]=='0')
           {
               Mois=date[4];
               MoisInt=atoi(&Mois);
               test=2;
 
           }
           if (test==1)
            printf("Le %c%c %s %c%c%c%c:\n",date[0],date[1],MFRAN[moisInt-1],date[6],date[7],date[8],date[9]);
           if (test==2)
            printf("Le %c %s %c%c%c%c:\n",date[1],MFRAN[MoisInt-1],date[6],date[7],date[8],date[9]);
    }
 
    if (langue == 2){
        char date[TAILLE_MAX]={0};
           printf("Enter a date, for example: 09 04 1996\n");
           scanf("%[^\n]",date);
           char mois[2],Mois=0;
           int moisInt=0,MoisInt=0;
           int test1=0,test2=0,test3=0;
           //=====J'effectue un teste si le mois s'écrit 02 par exemple  ou bien 11========
           if (date[3]!='0')
           {
               mois[0]=date[3];
               mois[1]=date[4];
               moisInt = atoi(mois);
               test1=1;
 
           }
           else if (date[3]=='0')
           {
               Mois=date[4];
               MoisInt=atoi(&Mois);
               test1=2;
           }
//=======Je teste si le jour est entre 1 et 4 pour savoir si je dois écrire 'st' ou bient 'nd' ou bien 'rd' ou bien 'th'=========
            if(date[1]=='1')
                test3=1;
            else if (date[1]=='2')
                test3=2;
            else if (date[1]=='3')
                test3=3;
            else if(date[1]=='4')
                test3=4;
 
           if (date[0]=='0')
                test2=2;
           else if(date[0]!='0')
                test2=1;
           if (test1==1)
           {
               if (test2==1) /*Ce test a pour but de voir si on a le jour écrit par exemple 01 ou bien 11 pour que si c'est écrit
                                on enlève le 0*/
                printf(" %s %c%cth %c%c%c%c:\n",MENG[moisInt-1],date[0],date[1],date[6],date[7],date[8],date[9]);
               else if(test2==2)
                printf(" %s %c %c%c%c%c:\n",MENG[moisInt-1],date[1],date[6],date[7],date[8],date[9]);
           }
           if (test1==2){
                if(test2==1)
                    printf(" %s %c%cth %c%c%c%c:\n",MENG[MoisInt-1],date[0],date[1],date[6],date[7],date[8],date[9]);
                    //======Le switch pour voir ce qu'on va écrire à côté du jour ('st' ou'nd ou'rd' ou 'th')=======
                else if(test2==2)
                {
                    switch(test3){
                    case 1:printf(" %s %cst %c%c%c%c:\n",MENG[MoisInt-1],date[1],date[6],date[7],date[8],date[9]);break;
                    case 2:printf(" %s %cnd %c%c%c%c:\n",MENG[MoisInt-1],date[1],date[6],date[7],date[8],date[9]);break;
                    case 3:printf(" %s %crd %c%c%c%c:\n",MENG[MoisInt-1],date[1],date[6],date[7],date[8],date[9]);break;
                }
                }
    }
    }
    return 0;
}