j'ai deux dates de type 14/05/2010 15:30:05:20:05 cad DD/MM/YYYY hh:mm:ss:msms:µsµs.
cette information date est enregistrer comme chaine de caractere dans un tableau parceque elle est charger a partir d'un fichier .txt
je veux savoir comment calculer la difference entre ces deux dates et la différence sera en ms ou bien en s.... suivant un choix donner par l'utilisateur
j'ai essayé de faire un programme mais ça marche pas: je vais laisser la partie millisecondes et microsecondes pour apres je vais essayé tt d'abord de faire marcher mon programme jusqu au seconde
le voila merci de me dire ou est le probleme:
Code :
#include <stdio.h>
#include <time.h>
int main()
{
struct tm1,tm2;
char buf1[255], buf2[255];
double diff;
Je reconnais le code du man que tu as mal recopié :p
Ce ne sont que des erreurs de copier coller, pas de soucis particuliers, à part pour ton printf ou tu as mis %d pour un double. (%d et %i sont pour des entiers, d'ou le résultat incohérent).
La fonction strptime n'est absolument pas standard, et si tu as bien lu le man, il te faut ajouter un define avant time.h
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
je veux bien extraine la partie milliseconde et µs ms ça marche pas une deuxieme fois avec ce code:
#include
#include <stdlib.h>
#include
int main()
{
char m [20], texte[] = "2001-11-13 18:31:01:25:50";
int ms,micros, i = 0;
for (i=20; texte[i]!=':'; ++i)
{
// printf("%c", texte[i]);
m[i]=texte[i];
//pour convertir m[10] en nombre entier }
ms= atoi(m);
printf("\n");
printf ("%d", ms);
for (i=23; texte[i]!='\0'; ++i)
{
printf("%c", texte[i]);
m[i]=texte[i];
}
micros= atoi(m);
//printf ("%d ms et %d µs", ms, micros);*/
Tu ne peux pas faire un atoi sur un début de tableau non initialisé !
Au mieux, il y a un 0 devant, et il te renvoie 0, au pire tu as une donnée aléatoire.
Une solution facile à ce problème (peut être pas la meilleur):
#include <stdlib.h>
#include
#include <stdio.h>
#include <string.h>
int main(void)
{
char m[21] = {0};
char texte[] = "2001-11-13 18:31:01:25:50";
int ms = 0;
int i = 0;
memset(m, '0', 20);
printf("%s\n", m);
for (i = 20; texte[i] != ':'; ++i)
m[i] = texte[i];
ms = atoi(m);
printf("%s %i\n", m, ms);
return 0;
}
PS: Attention, iostream c'est du C++, pas du C. Pense à prendre un compilateur C, et non C++. Tu risques d'avoir des surprises dans certains cas...
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question