La fonction clock() avec C sous linux me rens un résultat négatif et parfois null

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’une boucle 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

Sujet qui concerne plutôt la rubrique programmation.

je déplace :jap:

Salut,

Dans ton printf tu utilises le format %f, ce format est à utiliser uniquement pour les nombres réels. Le problème c’est que l’expression que tu donnes a tous l’air d’être un entier (un long je dirais à première vue).

Essaye donc plutôt d’écrire le printf de cette façon:

printf("durée= %lu sec\n",(clock()-a)/CLOCKS_PER_SEC);

Edité le 02/08/2008 à 14:38

Merci pour ta réponse dusty. Finalement le problème c’était avec %lu.

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 les éléments des matrices à chaque exécution. mais je ne sais pas comment le faire. Pouvez vous m’aidez à le faire
et merci beaucoup

Voici quelques pistes:

  1. Utilise fopen pour ouvrir un fichier
  2. Utilise fprintf pour écrire dans ce fichier en lui fournissant son handle (le FILE*)
  3. Ferme le fichier en utilisant fclose(…)

Pour récupérer les données tu utilises des fscanf (à la place des fprintf). Si ça t’amuses tu peux aussi utiliser la zlib pour compresser ton fichier. Mais je sais pas si c’est demandé dans ton TP…