IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Memory Fault


Sujet :

C

  1. #61
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Par défaut Memory fault
    Bonsoir,

    si je veut trier par date (exp date1) sachant que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strftime (date1,29,"%m/%d/%Y %T", gmtime (&sbuf.st_mtime));
    par contre ds la fct de comparaison il faut utiliser strcmp()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #define FMT_TIME "%Y/%m/%d %T" 
     
    int compar_size (const void *pt_a, const void *pt_b)
    {
       const struct stat *pt_sa = pt_a;
       const struct stat *pt_sb = pt_b;
      // return pt_sa->st_size - pt_sb->st_size;
       return strcmp(pt_sa->st_mtime, pt_sb->st_mtime);
    }
    là il ya un petit probleme de format non?

  2. #62
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Memory fault
    Citation Envoyé par melmouj
    par contre ds la fct de comparaison il faut utiliser strcmp()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int compar_size (const void *pt_a, const void *pt_b)
    {
       const struct stat *pt_sa = pt_a;
       const struct stat *pt_sb = pt_b;
      // return pt_sa->st_size - pt_sb->st_size;
       return strcmp(pt_sa->st_mtime, pt_sb->st_mtime);
    }
    là il ya un petit probleme de format non?
    Tu peux trier directement sur les valeurs numériques (ce sont des time_t, c'est fait pour ça)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       return pt_sa->st_mtime - pt_sb->st_mtime;

  3. #63
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Par défaut Memory Fault
    Bonjour

    une petite question

    je veux par exp afficher la liste entre deux date (date_debut et date_fin)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #define Date_debut "2005-09-19 08:00:00"
    #define Date_fin "2005-09-19 16:00:00"
     
    if(S_ISDIR (mode)) 
                { 
                  if (date1 > "2005-09-19 08:00:00")
                  { 
                   printf ("%10lu %20s %s %s %s\n",(unsigned long)sbuf[i].st_size, date1,date2, date3, patch); 
                  } 
                }

  4. #64
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    #define Date_debut "2005-09-19 08:00:00"
    #define Date_fin "2005-09-19 16:00:00"
     
    if(S_ISDIR (mode))
                {
                  if (date1 > "2005-09-19 08:00:00")
                  {
                   printf ("%10lu %20s %s %s %s\n",(unsigned long)sbuf[i].st_size, date1,date2, date3, patch);
                  }
                }
    C'est vraiment ton code ca ?

  5. #65
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Memory Fault
    Citation Envoyé par melmouj
    je veux par exp afficher la liste entre deux date (date_debut et date_fin)
    Convertir les dates en time_t :
    struct tm
    mktime()

    ensuite la comparaison est purement numérique. (> < etc.)

    Tu devrais vraiment lire le chapitre sur les dates de ton livre de C...

    En gros il y a 3 formats :
    • numérique : time_t (standard) je crois qu'on appelle aussi ce format 'epoch'. Utile pour les comparaisons et les calculs de temps...
    • structure : struct tm (standard)
    • chaine (comme on veut)

    time_t -> struct tm : gmttime(), localtime()
    struct tm -> time_t : mktime()
    struct tm -> chaine : strftime()

    Il n'y a pas de fonction standard pour convertir du texte en structure. Il faut interpréter les champs un par un... Par contre, mktime() recalcule les champs manquants si il sont à 0.

  6. #66
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Par défaut Memory fault
    Bonsoir,
    voila une fct qui converti les dates en format numeriques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    time_t fct(int jour, int mois, int annee)
    {
      time_t dt;
      struct tm t;
      t.tm_year = annee-1900;
      t->tm_mon  = mois-1 ;
      t->tm_mday = jour;
      dt=mktime(&t);
      return dt;
    }
    int main (int argc, char *argv[])
    {
    time_t dat;
    time_t date_debut=fct(19,09,2005);
    time_t date_fin=fct(20,09,2005);
    .......
     
     
    if (dat> date_debut and dat<date_fin)
    {
      TRT  //* tri des fichiers et rep creé ou modifié entre ses 2 dates *//
    }

  7. #67
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Par défaut Memory Fault
    Bonjour,

    j'ai une erreur:

    line 42: error 1643: Octal constants contain digits greater than 7.

    Merci d'avance

  8. #68
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut Re: Memory Fault
    Citation Envoyé par melmouj
    line 42: error 1643: Octal constants contain digits greater than 7.
    Je pense que le mesage est clair, tu as un nombre en base 8 avec un chiffre supérieur à 7! Tout nombre commençant par un 0 est considéré comme écrit en base 8.

Discussions similaires

  1. Problème de Core dumped, Memory Fault
    Par pmboutteau dans le forum C
    Réponses: 26
    Dernier message: 26/03/2009, 16h07
  2. [Mémoire] Probleme de Memory Fault louche
    Par wawa84 dans le forum C++
    Réponses: 1
    Dernier message: 23/11/2008, 20h53
  3. Memory fault à l'exécution
    Par miketidy dans le forum C++
    Réponses: 26
    Dernier message: 09/09/2008, 14h43
  4. Memory fault avec une structure
    Par Neuromancien2 dans le forum C
    Réponses: 4
    Dernier message: 04/01/2008, 14h25
  5. Memory fault(coredump)
    Par nono1 dans le forum C
    Réponses: 8
    Dernier message: 17/12/2002, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo