Erreur de initialisation de structure

Fermé
MissRobet Messages postés 4 Date d'inscription mercredi 14 novembre 2018 Statut Membre Dernière intervention 20 novembre 2018 - 20 nov. 2018 à 21:05
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 21 nov. 2018 à 15:14
bonsoir,
j'ai un petit problème en c en fait j'ai besoin d'un tableau de date et j'ai quelques instructions a faire pour cette date.. d'ou j'ai besoin de lire la date en tant que des entiers donc après un petit recherche j'ai finalement décider d'utiliser la structure mais je dois initialiser les 10 premiers valeurs du tableau mais je ne sais pas comment ... j'ai essayer plusieurs méthodes que j'ai trouver dans ma recherche mais ces erreurs m'ont blocker

2 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
21 nov. 2018 à 08:19
Bonjour,
Pour répondre, il faudrait surtout savoir comment tu as défini le type date.
Tu écris ensuite un tableau de 100 tableaux de 11 dates. On s'attend à fournir 100*11*3 paramètres du type des champs jour/mois/annee.
Pour un tableau de dates, on peut écrire :
struct date {
   unsigned char jour;            // par exemple
   unsigned char mois;
   unsigned short annee;
};
struct date tableau[3] = {{20,2,2015},{31,12,2016},{1,1,2017}};
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 21 nov. 2018 à 15:18
Salut MissRobet,

1.

Si tu dois comparer les dates, tu pourrais avoir intérêt à les stocker sous forme de tableau de chaînes de caractères au format "2015/02/20", c'est à dire année, mois, jour dans cet ordre. Cela te permet de comparer très simplement l'égalité de dates, ou le fait qu'une date soit antérieure ou postérieure à l'autre avec la fonction
strcmp()
accessible par
string.h
, car la comparaison lexicographique équivaut dans ce format à la comparaison de la chronologie des dates.

vois : https://en.cppreference.com/w/c/string/byte/strcmp

2.

Si tu veux pouvoir faire des choses plus complexes, comme calculer la différence entre deux dates, tu devrais utiliser les fonctions accessibles dans
time.h
pour convertir tes dates en
time_t
et utiliser
difftime()
...

Avec les fonctions accessibles dans
time.h
, tu pourras aussi déterminer le jour de la semaine, le numéro de semaine, vérifier si une date est valide, etc.

dans ce dernier cas :
- un stockage dans sous forme numérique comme proposé par Dalfab serait plus adéquat avec un tableau de struc contenant les informations de jour, mois et année sous forme d'entiers,
- ou carrément tu pourrais stocker les dates dans un tableau de
time_t
, en y stockant la conversion de ces informations (tu dois passer par une
struct tm
et utiliser
mktime()
) ...

vois : https://en.cppreference.com/w/c/chrono
0