Résultat négatif de clock() avec C sous linux

Résolu
hnouna2007 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'ai un problème qui m'empêche de dormir. En fait quand j'exécute le code suivant pour obtenir le temps CPU d'un processus il me trouve un résultat négatif.
voici le code:


#include <time.h>
#include <stdio.h>

int main() {
clock_t a=clock();
int i;
for (i=1;i<1000000;i++) {} /* code à timer */
printf("durée= %f sec\n",(clock()-a)/CLOCKS_PER_SEC);
}

J'espère que qlq'un puisse m'aider à résoudre ce problème. c trés urgent
A voir également:

6 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
parce que clock_t est un long int, pas un flottant. utiliser %ld pour l'imprimer, pas %f.
1
hnouna2007 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
merci dubcek le fait de recevoir ta réponse me fait soulagé.

Le problème c que dans ce cas le résultat est toujours null
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
et avec long i; plutôt que int
et en enlevant le -a)/CLOCKS_PER_SEC
0
hnouna2007 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
mais le i n'a rien avoir avec la fonction clock() donc que sa soit entier ou long ne fait aucune difference. Ou bien je me tronpe!!!!!!!!!
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
oui mais i entier ta boucle est peut être trop courte
0
hnouna2007 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
Merci finalement c la boucle qui a été courte.
Maintenant pour tester la fonction clock() dans un programme de produit de matrices et je voulais que les grandes matrices soient stockées dans un fichier pour avoir des boucles longues sans avoir à entrer leurs éléments à chaque exécution. mais je ne sais pas comment le faire. Pouvez vous m'aidez à le faire
et merci beaucoup
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
c'est un peu vague, mais voir fopen pour ouvrir un fichier, fprintf pour écrire et fscanf pour lire.
0
hnouna2007 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
d'accord
je vais essayer et te redonderais
0
hnouna2007 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
salut
j'ai essayé ce code mais le problème c que je ne peut pas stocker ou lire des valeurs entières:
Tous d'abord je crie un fichier vierge je le remplie par des valeurs entières. pui j'exécute ce code.
le problème c que il affiche des valeurs négatives et autres que les valeurs que j tapé.

main()
{
FILE *P_FICHIER; /* pointeur sur FILE */
char NOM_FICHIER[30]="monfichier";
int DONNEES;
int C,NB_ENREG;



/* Deuxième partie :
Lire et afficher à l'écran le contenu du fichier */

/* Ouverture du fichier en lecture */
P_FICHIER = fopen(NOM_FICHIER, "r");
C = 0;

/* Fin du fichier atteint ? */
while (!feof(P_FICHIER))
{
/* Lecture des données dans le fichier */
fscanf(P_FICHIER, "%d\n", DONNEES);

/* Affichage à l'écran */
printf("NOM : %d\n", DONNEES);
C++;
}
/* Fermeture du fichier !!! A ne surtout pas oublier !!!*/
fclose(P_FICHIER);
return 0;
}

merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
et avec :
fscanf(P_FICHIER, "%d\n", &DONNEES);
0
hnouna2007 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup pour votre aide
Oui sa marche parfaitement avec fscanf(P_FICHIER, "%d\n", &DONNEES);
en fait je suis faible en C.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
tout s'apprend
0