Bonjour à toutes et tous,
Novice que je suis (je découvre le langage C depuis peu...), je galère avec les chaines de caractères(en me limitant pourtant à 2 caractères!).
J'arrive à "quelque chose de correct" en recourant au plus basique (variable JJ dans le code).
Mais je suppose qu'il y a plus élégant, et surtout plus approprié pour des chaines de caractères plus longues : ce que j'ai essayé de faire avec la variable DD... sans succès...
Visiblement je ne maitrise pas du tout une syntaxe, et ni même mes recherches, dont les différents résultats restent hors de ma compréhension...
Je pensais , à tort, que mes 40 ans de VB aideraient mes vieux neurones à venir à bout de ce traitement de chaine de caractères ; que je trouve quand même surprenant de complexité...
Alors je m'en remets à une âme charitable (et compatissante) pour me mettre sur de bons rails et éclairer ma lanterne vacillante.
Le résultat affiché en console: FAUX avec variable DD...Code:#include <stdio.h> #include <stdlib.h> #include <math.h> #define Bcd2Dec(BcdNum) BcdNum, 0x10, 10 // BcdNum, 0x10, 10 ? #define Dec2Bcd(DecNum) DecNum, 10, 0x10 // DecNum, 10, 0x10 ? int main() { int c1,c2,c3,c4,c5,c6,c7; // Pour Affichages Dec et tmp[x] (datas en format 0x02d pour correctifs RTC) int x1,x2,x3,x4,x5,x6,x7; // Pour Affichages BCD char DD[7][3]={"Ln","Ma","Me","Je","Ve","Sa","Di"}; // Solution 1 pour Affichage ID Jour en string de 2 lettres selon Numero du jour char JJ[25]; // Solution 2 pour Affichage ID jour en string de 2 lettres selon Numero du jour c1=0; // Secondes (0 a 59) x1=Bcd2Dec(c1); // c1 en BCD c2=8; // Minutes (0 a 59) x2=Bcd2Dec(c2); // c2 en BCD c3=15; // Heure (0 a 23) x3=Bcd2Dec(c3); // c3 en BCD c4=3; // Numero du Jour (1 à 7) x4=Bcd2Dec(c4); // c4 en BCD if(c4==1){DD[0][0];} // Ln = Lundi (1er string de 2 lettres + '0/') else if(c4==2){DD[1][3];} // Ma = Mardi (2eme string de 2 lettres + '0/') else if(c4==3){DD[2][3];} // Me = Mercredi (3eme string de 2 lettres + '0/') else if(c4==4){DD[3][3];} // Je = Jeudi (4eme string de 2 lettres + '0/') else if(c4==5){DD[4][3];} // Ve = Vendredi (5eme string de 2 lettres + '0/') else if(c4==6){DD[5][3];} // Sa = Samedi (6eme string de 2 lettres + '0/') else {DD[6][3];} // Di = Dimanche (7eme string de 2 lettres + '0/') if(c4==1){JJ[0] = 'L';JJ[1] = 'n';JJ[2]='\0';} // Ln = Lundi (1er string de 2 lettres + '0/') else if(c4==2){JJ[0] = 'M';JJ[1] = 'a';JJ[2]='\0';} // Ma = Mardi (2eme string de 2 lettres + '0/') else if(c4==3){JJ[0] = 'M';JJ[1] = 'e';JJ[2]='\0';} // Me = Mercredi (3eme string de 2 lettres + '0/') else if(c4==4){JJ[0] = 'J';JJ[1] = 'e';JJ[2]='\0';} // Je = Jeudi (4eme string de 2 lettres + '0/') else if(c4==5){JJ[0] = 'V';JJ[1] = 'e';JJ[2]='\0';} // Ve = Vendredi (5eme string de 2 lettres + '0/') else if(c4==6){JJ[0] = 'S';JJ[1] = 'a';JJ[2]='\0';} // Sa = Samedi (6eme string de 2 lettres + '0/') else {JJ[0] = 'D';JJ[1] = 'i';JJ[2]='\0';} // Di = Dimanche (7eme string de 2 lettres + '0/') c5=6; // Date du Jour (1 a 31) x5=Bcd2Dec(c5); // c5 en BCD c6=9; // Mois (1 a 12) x6=Bcd2Dec(c6); // c6 en BCD c7=23; // An x7=Bcd2Dec(c7); // c7 en BCD // Affichages printf("saisie Secondes >%02d ; tmp[1]>0x%02d (BCD>%03d) \n",c1,c1,x1); printf("saisie Minutes >%02d ; tmp[2]>0x%02d (BCD>%03d) \n",c2,c2,x2); printf("saisie Heures >%02d ; tmp[3]>0x%02d (BCD>%03d) \n",c3,c3,x3); printf("saisie Jour (DD) >%s ; tmp[4]>0x%02d (BCD>%03d) \n",DD,c4,x4); // !!!FAUX!!! printf("saisie Jour (JJ) >%s ; tmp[4]>0x%02d (BCD>%03d) \n",JJ,c4,x4); // VRAI printf("saisie Date >%02d ; tmp[5]>0x%02d (BCD>%03d) \n",c5,c5,x5); printf("saisie Mois >%02d ; tmp[6]>0x%02d (BCD>%03d) \n",c6,c6,x6); printf("saisie An >%02d ; tmp[1]>0x%02d (BCD>%03d) \n",c7,c7,x7); return 0; }
RTC_ID-Jour.jpg
J'ai également beaucoup de Warnigns et des "notes".... (voir fichier pdf joint)
Merci.
-----