Fichier en langage C et date

Signaler
-
Messages postés
579
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
16 juillet 2021
-
Bonjour, je suis censée écrire un programme en C pour créer une banque. Créer un compte, retrait, dépôt, recherche de compte,transfert, historique, consultation de compte. Là j'en suis à la création et j'ai deux problèmes. Tout d'abord la date de création je n'ai aucune idée de comment la générer automatiquement alors si vous pouvez me montrer un bloc de code pour ça et m'expliquer je serais contente. Ensuite j'arrive à enregistrer les données dans le fichier avec le numcompte qui s'incrémente à chaque fois cependant quand je reprends le programme le programme le numéro de compte reviens à 1 du coup je me retrouve avec plusieurs comptes ayant le même numéro. Merci de bien vouloir m'aider !

2 réponses

Messages postés
16448
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 juillet 2021
880
Messages postés
579
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
16 juillet 2021
79
Bonjour,

Pour avoir la date courante tu peux utiliser
time_t time(time_t* arg)
, qui retourne un nombre qui date de manière universelle l'instant présent.
Tu peux convertir ce
time_t
en une structure dans laquelle la date est décomposée avec
struct tm* localtime( const time_t* time )
, tu retrouves dans cette structure les jours, années, minutes, secondes...
Et tu peux obtenir la conversion de cette
struct tm
en une chaîne avec la fonction
size_t strftime(char* restrict str, size_t count, const char* restrict format, const struct tm* restrict time)
.
Plus d'explications dans https://forums.commentcamarche.net/forum/affich-37142716-fichier-en-langage-c-et-date ou https://en.cppreference.com/w/c/chrono
Ça donne :
#include <time.h>
voit test(void) {
   time_t  instant_courant = time( NULL );
   struct tm  instant_details = *localtime( &instant_courant );
   char  instant_texte[64];
   strftime( instant_texte, sizeof instant_texte, "%D", &instant_details );
   printf( "la date est : %s\n", instant_texte );
}


Quand ton programme redémarre, il n'a aucune information sur son passé. Pour continuer ta numérotation, il te faut au début du programme essayer d'ouvrir et de lire ton fichier pour récupérer le dernier numéro.