Pour un petit programme de TODO que j'écris, j'ai des horodatages qui sont de cette forme et sont enregistrés chaque fois qu'une tâche est entrée pour indiquer l'heure à laquelle il a été saisi. p> Je veux stocker les tâches dans un fichier texte brut, de sorte que l'état puisse être enregistré et restauré. Comment dois-je stocker les horodatages dans le fichier texte et comment puis-je les récupérer dans mon programme après avoir lu le fichier texte? P> p>
3 Réponses :
Si cela ne vous dérange pas un peu d'hypothèses non conportées, juste lancer La norme ne garantit aucune garantie qu'un time_t code> à long code> ( long long code> si vous avez un compilateur C99 ), écrivez la valeur LONG code>, lisez la valeur et rétablissez sur TIME_T CODE>. P>
time_t code> est même représentable comme long: il ne dit que time_t code> est un type arithmétique, mais l'astuce ci-dessus devrait fonctionner pour tous les saines. Systèmes: -) P>
Le mode fort> portable strong> utilise la fonction Le mode fort> Sane fort> est d'assumer diff terne code>. Calculez le TIME_T CODE> pour une époque choisie à l'aide de mktime code>, puis utilisez diff terrime code> pour calculer la différence en secondes. Pour convertir en arrière, vous pouvez commencer par l'époque en tant que struct tm code> et ajouter le nombre de secondes à tm_sec code>, puis appelez mktime code> pour obtenir un time_t code>. p>
Time_t code> est représenté sous forme secondes depuis l'époque UNIX (1970-01-01 00:00 GMT) et convertir en un grand type entier. ( long long code> est le meilleur) pour l'imprimer. POSIX nécessite TIME_T CODE> SECONDES DE SECONDES ÉPOCH, et sur tout système SANE SANED. P>
J'ai fait la première de vos suggestions, car je dois faire face au compilateur croisé et aux considérations de plateformes croisées.
Convertir le Pour revenir au pour référence: p> time_t code> à struct tm code> à l'aide de gmtime () code>, puis convertir le struct tm code> en texte brut (de préférence le format ISO 8601) en utilisant StrfTime () code>. Le résultat sera portable, lisible par l'homme et lisible à la machine. Time_t Code>, vous faites simplement l'analyse de la chaîne dans un struct TM code> et utilisez < Code> mktime () code>. p>
@simplebob: Il n'y a que trois appels de fonction et ils sont tous bien documentés aux liens fournis. Avez-vous essayé d'utiliser les utiliser? Avez-vous rencontré des problèmes spécifiques?
Je me demandais simplement comment obtenir le codé à Time_T après avoir utilisé StrfTime () Code>. Mais j'ai trouvé STRIPTIME CODE> déjà. Merci!