/* autre alternative */
#include
<stdio.h>
/* printf() */
/* optionnel */
#define
DIMANCHE 0
#define
LUNDI 1
#define
MARDI 2
#define
MERCREDI 3
#define
JEUDI 4
#define
VENDREDI 5
#define
SAMEDI 6
/* pourrait être dynamique pour différentes langues */
static
struct
{
const
char
* nomLong;
const
char
* nomCourt;
}jours[
/* 0-6 */
] =
{
{
"dimanche"
,
"dim"
},
{
"lundi"
,
"lun"
},
{
"mardi"
,
"mar"
},
{
"mercredi"
,
"mer"
},
{
"jeudi"
,
"jeu"
},
{
"vendredi"
,
"ven"
},
{
"samedi"
,
"sam"
}
};
/* pas vraiment utile puisqu'il y a toujours 7 jours dans une semaine =_= */
#define
NOMBRE_DE_JOUR (
sizeof
(jours) /
sizeof
(jours[ 0 ]))
int
main()
{
int
i;
for
(i = 0; i < NOMBRE_DE_JOUR; i++)
{
printf(
"%d) %s (%s)\n"
, i, jours[ i ].nomLong, jours[ i ].nomCourt);
}
printf(
"\n%s\n"
, jours[ MERCREDI ].nomLong);
return
0;
}je crois que c'est assez clair, pas la peine de commenter?
pour maladededadedido.... moi j'irais plutôt avec un «
const char* jours[7] = {..., ..., ...}; » ou un «
const char* jours[] = {...}; », etc. peu importe ... assignation dès la déclaration, et constant ...
printf(
"%s", jour[6]+3) << en fait ce que tu fais c'est que tu te déplaces de 3 casses vers la droite, donc tu sautes les trois premiers caractères, ton « jour[6] » est une chaine «
char* »
char* chaine =
"dimanche";
puts(chaine + 3); /* affiche: anche */
et c'est normal puisque tu demandes d'aller 3 casses vers la droite ... (une chaine de caractères est une « suite » de caractères)
chaine[0] =
'd'chaine[1] =
'i'chaine[2] =
'm'chaine[3] = ???
...
*(chaine+3) == chaine[3] ==
'a'~(.:: NitRic ::.)~