probleme sur calcul de temps - C - Programmation
Marsh Posté le 15-06-2004 à 11:13:04
c la meme question certes mais la derniere fois j'avais pose plusieur question est celle ci avait ete completement zappe.
J'ai refait un post non pas par impatience mais plutot pour que ceux qui vont lire mon post n'ai pas a lire tout ce que l on ma conseille concernant les autres questions.
C 'etait pout plus de clarte. Je pensais pas enerver.
Marsh Posté le 15-06-2004 à 11:14:46
Bombyce a écrit : Je pensais pas enerver. |
Avec Taz, ne pas "énerver", c'est une quête d'absolu...
Marsh Posté le 16-06-2004 à 15:28:52
Je pensai mon probleme completement regle mais j'ai encore quelques petites erreurs.
J'ai recuperer les champs contenant les heures , les min , les secondes.
avec:
Code :
|
je fais ce traitement sur une ligne1,je change de ligne puis refais le meme traitement avec la ligne2.
ensuite il faut effectuer le calcul de la difference entre HEURE_1 et HEURE_2 .
Pour cela il faut que faire une conversion en 'int'.
j'utilise la fonction atoi,mais la j'ai un probleme.
Code :
|
idem pour la ligne2:
Code :
|
et la , j'ai des erreurs ,je dois mal utilise 'atoi' .
Pouvez vous m'aider?
A+
Marsh Posté le 16-06-2004 à 15:37:48
atoi ne te permet pas de détecter des erreurs. utilise strtol / strtoul
Marsh Posté le 16-06-2004 à 16:29:55
le atoi("Taz" ) marche aléatoirement, ca dépend de son humeur lol :-)
Marsh Posté le 16-06-2004 à 19:27:53
Daccord TAz je vais suivre ton conseil.
A+
p.s : je vois souvent le nom d un livre (T&K).
Pourriez vous me donner son nom complet , l'editeur/la collection et si possible son prix.
Merci.
Marsh Posté le 17-06-2004 à 11:05:29
ça marche nikel mais ensuite pour concatennerle reultat du calcul au reste des données misent dans le fichier je dois zeffectuer une conversion inverse c'est a dire transformer un int en caractere.
Existe t il une autre fonction que 'itoa'?
(Comme elle ressemble beaucoup a atoi, je me demande si elle ne serait pas deconseille elle aussi).
Merci pour votre aide.
A+
Marsh Posté le 17-06-2004 à 14:12:21
pourrais tu m'expliquer ou est mon erreur:
je fais ce code:
Code :
|
exemple de ce que je veux avoir pour resultat:
0/01/04,00:09:24;080,02.
Marsh Posté le 17-06-2004 à 14:27:20
si tu fais du sprintf après du strcat, t'as écrasé tout ce qu'il y avait précédemment ..
n'utilise que sprintf(), en faisant un truc du genre :
char *p = phrase;
p += sprintf( p, ...);
Marsh Posté le 17-06-2004 à 14:36:34
c'est une blague ce truc ?
sprintf(phrase, "%s" ,dureeHeures);
strcat(phrase,":" );
sprintf(phrase, "%s" ,dureeMinutes);
strcat(phrase,":" );
sprintf(phrase, "%s" ,dureeSecondes);
strcat(phrase,";" );
?
Marsh Posté le 17-06-2004 à 15:03:41
Voila mon code avec les 'sprintf' mais je comprends pas ou est mon erreurs car mon prog plante a l'execution quand j'arrive a ce code.
Code :
|
Pouvez vous m'expliquer?
A+
Marsh Posté le 17-06-2004 à 15:36:10
Bombyce a écrit : Voila mon code avec les 'sprintf' mais je comprends pas ou est mon erreurs car mon prog plante a l'execution quand j'arrive a ce code. |
Et ensuite c'est phrase ou phras le nom de ta chaine?
Marsh Posté le 17-06-2004 à 15:58:02
Quelle est la valeure de taille? Ensuite pqoi tu cumules les sprintf quand tu peux tout faire en une instruction?
Marsh Posté le 17-06-2004 à 18:46:58
vi, c'est n'importe nawak ça ...
Et temp qui pointe sur queud, tu m'étonne que ça vautre ...
Marsh Posté le 17-06-2004 à 22:32:20
c la fete ici
ta raison met des sprintf le programme va plus vite
Marsh Posté le 17-06-2004 à 23:25:18
On s'en fout ici, de la vitesse. Le programme ne marche pas et ne risque pas de marcher avant un moment vu comme il est gaulé.
Marsh Posté le 18-06-2004 à 00:11:25
el muchacho a écrit : On s'en fout ici, de la vitesse. Le programme ne marche pas et ne risque pas de marcher avant un moment vu comme il est gaulé. |
il a rien compris
Marsh Posté le 18-06-2004 à 08:34:28
eho on se calme je debute, ça fait mainteneant a peu pres 4 semaines que je fais du C...
alors un peu d'indulgence et montrez moi un exemple de 'sprintf'
Marsh Posté le 18-06-2004 à 09:20:22
Code :
|
En supposant que tes variables dureeTruc soit déjà des chaines, si ce sont des entiers faut utiliser %d
Marsh Posté le 18-06-2004 à 09:24:45
Mon dieu que je suis C.. , ahlala j'ai l'impression d'etre un boulet avec mes questions idiotes.
Marsh Posté le 18-06-2004 à 09:34:19
Ce sont des int car j'ai d'abord effectuer une conversion de la chaine de caracteres que j'ai recupere precedement afin de pouvoir effectuer un calcul numerique.
J'ai tous d'abord cru que je devais ensuite effectuer une nouvelle conversion des int en char afin de pouroir les concatener a la suite des autre elements.
Mais 'dapres ce que je comprends ds messages precedents avec sprintf ,il n'y a pas besoin d'effectuer une conversion.
Je me trompe ?
A+
Marsh Posté le 18-06-2004 à 10:00:27
Vi, dans sprintf faut tout de même que tu lui donne le format dans lequel tu veux qu'il te traite variable pour qu'il fasse le boulot ...
Marsh Posté le 18-06-2004 à 10:01:12
Peut on combiner des sprintf et des strcat?
car avec une fonction 'recupmot' je recuperes des mots , puis fait une copie, ensuite je concatene les elements suivant a la suite.
Mais pour rajouter les elements de calcul je dois utiliser sprintf et la mon programme plante et cela juste quand arrive le deuxieme recupmot qui utilise un strcat.
Code :
|
Marsh Posté le 18-06-2004 à 10:04:14
je t'ai déjà répondu là dessus ...
Citation : char *p = phrase; |
Citation : Et temp qui pointe sur queud, tu m'étonne que ça vautre ... |
Marsh Posté le 18-06-2004 à 13:26:24
Merci pour votre patience.
Et j'avais bien vu ton precedent post mais etais reste bloque sur mon idee qui etait d'ailleur une idee de merde puisque ça marche pas.
Enfin bon maintenant ça marche. Du moins ça ne plante plus.
A+
Marsh Posté le 22-06-2004 à 14:46:16
Voici une partie de mon code pour trier les lignes d un fichier texte.
exmple de lignes:
10/01/04,00:07:45;080,02;Ko.
10/01/04,00:08:58;080,02;Ok,ReceptionDM.
10/01/04,00:09:24;080,02;Ko,PasDeReponseSurLiaison.
10/01/04,00:09:32;080,02;Ok,ReceptionDM.
10/01/04,00:09:42;080,02;Ko,ExcesRetransmission.
10/01/04,00:09:49;080,02;Ok,ReinitLiaison.
Code :
|
Mon probleme est que je recupere dans le fichier definitif une repetitions des lignes precedentes, c'est a dire :
10/01/04 , 0:0:0 ; 0:1:13 ; 080 , 02 , ReceptionDM . //1er resultat
10/01/04 , 0:0:0 ; 0:1:13 ; 080 , 02 , ReceptionDM . //1er resultat
10/01/04 , 0:0:0 ; 0:0:8 ; 080 , 02 , ReceptionDM . //2eme resultat
10/01/04 , 0:0:0 ; 0:1:13 ; 080 , 02 , ReceptionDM . //1er resultat
10/01/04 , 0:0:0 ; 0:0:8 ; 080 , 02 , ReceptionDM . //2eme resultat
10/01/04 , 0:0:0 ; 0:0:7 ; 080 , 02 , ReinitLiaison //3eme resultat
J'imagine faire une erreur de parcour avec mes boucles mais ça fait un moment que je cherche et je bloque
J'abuse peut etre de donner une partie de mon code comme ça et d'esperer que vous trouverez mon/mes erreur(s) mais la je seche vraiment et ça me prend la tete.
Merci de votre aide.
Marsh Posté le 22-06-2004 à 14:49:29
déjà jète ton feof de merde qui marchera jamais
while(fgets() != NULL)
{
// action
}
Marsh Posté le 22-06-2004 à 14:56:09
bon c modifie
mais une petite question, si je fais :
while((fgets(caracteres,TAILLE-1,lignes)!= NULL){
//action
}
cela va t il me faire changer de ligne?
Marsh Posté le 22-06-2004 à 16:00:18
sizeof caractères et pas TAILLE-1
ça va pas te faire changer de ligne sytématiquement, ça va lire jusqu'à TAILLE-1 caractères, '\n' compris si la fin de ligne a été atteinte, et ça mettra __toujours__ un 0 final
Marsh Posté le 15-06-2004 à 10:49:20
Bonjour.
10/01/04,00:07:45;080,02;Ko. (1)
10/01/04,00:08:58;080,02;Ok,ReceptionDM. (2)
ci dessus les 2 lignes extraites du fichier.
je recupere les differents champs de la ligne1 et de la ligne2 afin de verifier leur compatibilitees. Puis je voudrais effectuer un calcul de difference de temps entre les 2 lignes. mais la je suis bloque.
J'ai d'abord essayer avec difftime mais je n'arrive pas a la mettre en oeuvre et ne sais pas si cela convient a ce que je veux effectuer (sachant que je veux ensuite inclure le resultat dans un fichier (ce resultat devant se trouver au milieu d'une chaine de caracteres))
j'ai pense faire un parcours de la ligne a partir de la premiere virgule et jusqu'a un indice valant 8, afin de mettre chaque caracteres dans un tableau puis pareil pour la 2 ieme lignes et pour finir une soustraction ( (2) - (1) ).
voila mon code pour la 1ere ligne)
char *calculTemps(int ind1,int ind2,char *chaine){
char *resultat;
int i,j;
ind2 = 8;
i=0;
j=ind1;
resultat=malloc(100);
strchr(phras,',');
while (j <= ind2){
tab[i] = chaine [j];
i++;
j++;
}
strcpy(resultat,tab);
}return resultat;
j' ai besoin d'aide.
Merci a tous ceux qui liront mon post et surtout un un grand merci a ceux qui vont m'eclairer.