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

Bibliothèque standard C Discussion :

[Memset] Freeze de l'application


Sujet :

Bibliothèque standard C

  1. #1
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut [Memset] Freeze de l'application
    Bonjour à tous,

    Je veux tester ce code :
    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
     
    void lireDonneeTableHeurgen(FILE * stream)
     {  
              struct b_heurgen donnees;
              memset(&donnees,0x00,sizeof(struct b_heurgen));   
              fscanf(stream,"%d %d %d %d %d %d %d %d %d %s\n",                                           
                     &(donnees.nphenrg),
                     &(donnees.nmiss),                                                                   
                     &(donnees.hdebenrg),                                                                
                     &(donnees.hroul),
                     &(donnees.hdec_sna),                                                                
                     &(donnees.hdec_utc),                                                                
                     &(donnees.hatt),                                                                    
                     &(donnees.hpark),
                     &(donnees.hfin),
                     &(donnees.vheure)                                                                   
                    );
              if(ajouterEnregistrementHeurgen(&donnees))
                      printf("[HEURGEN]Enregistrement %d ajoute\n",donnees.nphenrg);                     
              else
                      printf("[HEURGEN]Erreur : enregistrement %d non ajouté\n",donnees.nphenrg);        
      }
    Sachant que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    struct b_heurgen {
         uint16_t nphenrg;
         uint16_t nmiss;
         uint32_t hdebenrg;
         uint32_t hroul;
         uint32_t hdec_sna;
         uint32_t hdec_utc;
         uint32_t hatt;
         uint32_t hpark;
         uint32_t hfin;
         bool vheure[16];
      };
    Si je laisse tel quel, mon application n'avance plus dès l'appel à ma méthode.
    Si je commente la ligne memset(....) mon application fonctionne.


    Quelqu'un aurait une piste ?


    Merci pour votre aide
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Bizarre car ce que tu fais à l'air correct

    Un problème ailleurs dans ton code ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Tous les codes de format dans ton fscanf() sont faux:
    - pour uint16_t c'est SCNu16
    - pour uint32_t c'est SCNu32
    - pour bool[], ça n'existe pas

    Cordialement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Peux-tu expliquer le "SCNu16" ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    7.8.1 Macros for format specifiers
    1 Each of the following object-likemacros
    191)
    expands to a character string literal
    containing a conversion specifier,possibly modified by a length modifier,suitable for use
    within the format argument of a formatted input/output function when converting the
    corresponding integer type. These macro names have the general form of PRI (character
    string literals for the fprintf and fwprintf family) or SCN (character string literals
    for the fscanf and fwscanf family),
    192)
    followed by the conversion specifier,
    followed by a name corresponding to a similar type name in 7.18.1. In these names, N
    represents the width of the type as described in 7.18.1. Forexample, PRIdFAST32 can
    be used in a format string to print the value of an integer of type int_fast32_t.
    2 The fprintf macros for signed integers are:
    PRIdN PRIdLEASTN PRIdFASTN PRIdMAX PRIdPTR
    PRIiN PRIiLEASTN PRIiFASTN PRIiMAX PRIiPTR
    190) See ‘‘future library directions’’(7.26.4).
    191) C++ implementations should define these macros only when __STDC_FORMAT_MACROS is defined
    before <inttypes.h> is included.
    192) Separate macros are givenfor use with fprintf and fscanf functions because, in the general case,
    different format specifiers may be required for fprintf and fscanf,evenwhen the type is the
    same.
    198 Library §7.8.1WG14/N1256 Committee Draft — Septermber 7, 2007 ISO/IEC 9899:TC3
    3 The fprintf macros for unsigned integers are:
    PRIoN PRIoLEASTN PRIoFASTN PRIoMAX PRIoPTR
    PRIuN PRIuLEASTN PRIuFASTN PRIuMAX PRIuPTR
    PRIxN PRIxLEASTN PRIxFASTN PRIxMAX PRIxPTR
    PRIXN PRIXLEASTN PRIXFASTN PRIXMAX PRIXPTR
    4 The fscanf macros for signed integers are:
    SCNdN SCNdLEASTN SCNdFASTN SCNdMAX SCNdPTR
    SCNiN SCNiLEASTN SCNiFASTN SCNiMAX SCNiPTR
    5 The fscanf macros for unsigned integers are:
    SCNoN SCNoLEASTN SCNoFASTN SCNoMAX SCNoPTR
    SCNuN SCNuLEASTN SCNuFASTN SCNuMAX SCNuPTR
    SCNxN SCNxLEASTN SCNxFASTN SCNxMAX SCNxPTR
    6 Foreach type that the implementation provides in <stdint.h>,the corresponding
    fprintf macros shall be defined and the corresponding fscanf macros shall be
    defined unless the implementation does not have a suitable fscanf length modifier for
    the type.
    7 EXAMPLE
    #include <inttypes.h>
    #include <wchar.h>
    int main(void)
    {
    uintmax_t i = UINTMAX_MAX; // this type always exists
    wprintf(L"The largest integer value is %020"
    PRIxMAX "\n", i);
    return 0;
    rapidement, PRI => printf, SCN => scanf

    Cordialement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Ah OK, les macros C99.

    J'avais peur qu'il s'agisse directement de code de format.

    PS: Si j'en crois l'exemple fourni, la norme C99 résout également le problème du L"Toto" "tata"? Cool! Maintenant si Microsoft voulait bien se décider à l'implémenter...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Bonjour,

    Citation Envoyé par nicolas.sitbon Voir le message
    Tous les codes de format dans ton fscanf() sont faux:
    - pour uint16_t c'est SCNu16
    - pour uint32_t c'est SCNu32
    - pour bool[], ça n'existe pas

    Cordialement.

    Je n'ai pas encore lu ton message ci-dessous mais ... que mes formats soient bons ou pas, cela n'explique pas le fait que lorsque le memset est commenté cela fonctionne alors que lorsque je le laisse cela ne fonctionne pas ?

    Pour le bool, c'est une définition personnelle que je ne vous avais pas donné :
    Merci pour votre aide ...
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  8. #8
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    PS: Si j'en crois l'exemple fourni, la norme C99 résout également le problème du L"Toto" "tata"?
    Absolument, si au moins un des tokens est une chaine de caractère large, alors la chaine résultante est une chaine de caractère large:
    5.1.1.2 Translation phases
    ...
    6. Adjacent string literal tokens are concatenated.

    ...
    6.4.5 String literals
    ...
    4 In translation phase 6, the multibyte character sequences specified by anysequence of
    adjacent character and wide string literal tokens are concatenated into a single multibyte
    character sequence. If any of the tokens are wide string literal tokens, the resulting
    multibyte character sequence is treated as a wide string literal; otherwise, it is treated as a
    character string literal.
    Cordialement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  9. #9
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Il faudrait voir les entrées que tu donnes à ton programme aussi. Que lit-il exactement?

    Si je devais deviner, c'est ton ajouterX, qui fait bloquer ton application.

    Jc

  10. #10
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Bonjour,

    Le fichier que je lui donne en entré est celui-ci :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    0 1 2 3 4 5 6 7 8 9 test1
    0 2 2 3 4 5 6 7 8 9 12342345
    0 3 2 3 4 5 6 7 8 9 12345
    0 4 2 3 4 5 6 7 8 9 test2
    0 5 2 3 4 5 6 7 8 9 etEncoreunTest
    0 6 2 3 4 5 6 7 8 9 456789012345
    0 7 2 3 4 5 6 7 8 9 13467801245
    0 8 2 3 4 5 6 7 8 9 12356790235
    0 9 2 3 4 5 6 7 8 9 124579135
    0 10 2 3 4 5 6 7 8 9 1374
    0 11 2 3 4 5 6 7 8 9 test1
    0 12 2 3 4 5 6 7 8 9 test1
    0 13 2 3 4 5 6 7 8 9 test1
    0 14 2 3 4 5 6 7 8 9 test1
    0 15 2 3 4 5 6 7 8 9 test1
    0 16 2 3 4 5 6 7 8 9 test1
    0 17 2 3 4 5 6 7 8 9 test1
    0 18 2 3 4 5 6 7 8 9 test1
    0 19 2 3 4 5 6 7 8 9 test1
    0 120 2 3 4 5 6 7 8 9 test1
    0 121 2 3 4 5 6 7 8 9 test1
    0 122 2 3 4 5 6 7 8 9 test1
    0 123 2 3 4 5 6 7 8 9 test1
    0 124 2 3 4 5 6 7 8 9 test1
    0 125 2 3 4 5 6 7 8 9 test1
    0 126 2 3 4 5 6 7 8 9 test1
    0 227 2 3 4 5 6 7 8 9 12342345
    0 328 2 3 4 5 6 7 8 9 12345
    0 429 2 3 4 5 6 7 8 9 test2
    0 530 2 3 4 5 6 7 8 9 etEncoreunTest
    0 631 2 3 4 5 6 7 8 9 456789012345
    0 732 2 3 4 5 6 7 8 9 13467801245
    0 833 2 3 4 5 6 7 8 9 12356790235
    0 934 2 3 4 5 6 7 8 9 124579135
    0 1035 2 3 4 5 6 7 8 9 1374
    0 236 2 3 4 5 6 7 8 9 12342345
    0 337 2 3 4 5 6 7 8 9 12345
    0 438 2 3 4 5 6 7 8 9 test2
    0 539 2 3 4 5 6 7 8 9 etEncoreunTest
    0 640 2 3 4 5 6 7 8 9 456789012345
    0 741 2 3 4 5 6 7 8 9 13467801245
    0 842 2 3 4 5 6 7 8 9 12356790235
    0 943 2 3 4 5 6 7 8 9 124579135
    0 1044 2 3 4 5 6 7 8 9 1374
    0 245 2 3 4 5 6 7 8 9 12342345
    0 346 2 3 4 5 6 7 8 9 12345
    0 447 2 3 4 5 6 7 8 9 test2
    0 548 2 3 4 5 6 7 8 9 etEncoreunTest
    0 649 2 3 4 5 6 7 8 9 456789012345
    0 750 2 3 4 5 6 7 8 9 13467801245
    0 851 2 3 4 5 6 7 8 9 12356790235
    0 952 2 3 4 5 6 7 8 9 124579135
    0 1053 2 3 4 5 6 7 8 9 1374
    L'ouverture de mon fichier et le traitement du premier caractère est là :
    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
    24
    25
    26
    27
     
    void chargerFichier()
    {
        FILE * stream;
        int idTable;
        stream = fopen(ficDonnees,"r");
        if(stream==NULL)
        {
            printf("Erreur : ouverture du fichier %s imposible\n",ficDonnees);
            return;
        }
        while(!feof(stream))
        {
            fscanf(stream,"%d",&idTable);
            switch(idTable)
            {
                case B_HEURGEN:
                    lireDonneeTableHeurgen(stream);
                    break;
                ...
                default:
                    break;
            }
        }
        fclose(stream);
        return;
    }
    Merci de m'aider
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Déjà, mauvaise utilisation de feof(), et absence de vérification du retour de fscanf().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Bonjour,

    Citation Envoyé par Médinoc Voir le message
    Déjà, mauvaise utilisation de feof(), et absence de vérification du retour de fscanf().
    Je ne vois pas ce qui cloche dans mon utilisation de feof() ?
    Que fais-je de mal ? Je me base là-dessus (source):
    int feof ( FILE * stream );
    Check End-of-File indicator
    Checks whether the End-of-File indicator associated with stream is set, returning a value different from zero if it is.
    This indicator is generally set by a previous operation on the stream that reached the End-of-File.
    Further operations on the stream once the End-of-File has been reached will fail until either rewind, fseek or fsetpos is successfully called to set the position indicator to a new value.


    Parameters

    streamPointer to a FILE object that identifies the stream.

    Return Value

    A non-zero value is returned in the case that the End-of-File indicator associated with the stream is set.
    Otherwise, a zero value is returned.
    Merci
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    This indicator is generally set by a previous operation on the stream that reached the End-of-File.
    feof() est indéfini tant qu'une opération de lecture n'a pas échoué. Tu dois donc attendre qu'une opération de lecture échoue, puis utiliser feof() pour savoir si elle a échoué à cause de la fin du fichier (succès) ou à cause d'une autre erreur (échec).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Bleys Voir le message
    Je ne vois pas ce qui cloche dans mon utilisation de feof() ?
    Que fais-je de mal ? Je me base là-dessus (source):
    Tu n'es vraiment pas logique, tu te bases sur des cours de C++ pour programmer en C, en plus c'est une question récurrente : http://c.developpez.com/faq/?page=es_general#ES_feof
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  15. #15
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Bonjour,

    Citation Envoyé par nicolas.sitbon Voir le message
    Tu n'es vraiment pas logique, tu te bases sur des cours de C++ pour programmer en C, en plus c'est une question récurrente : http://c.developpez.com/faq/?page=es_general#ES_feof

    Merci pour le lien ...

    Mais bon, malgré ces "'erreurs" d'utilisation, cela n'explique pas pourquoi avec le memset et sans le memset le programme freeze ?

    Une idée ?
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  16. #16
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Pourquoi redéfinis tu bool?
    Pourquoi un memset() sur une structure? que crois tu faire avec?
    Peut on avoir un code qui compile avec les corrections?
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  17. #17
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Pourquoi redéfinis tu bool?
    Parce que bool en C ça n'existe pas ?

    Citation Envoyé par nicolas.sitbon Voir le message
    Pourquoi un memset() sur une structure? que crois tu faire avec?
    Dans mon idée, seulement je ne suis pas certain que cela puisse fonctionner pour des soucis d'alignement en fait, cela me permettrait d'initialiser ma structure et surtout de faire en sorte que mon champ de type bool soit à 0 de partout ...

    Citation Envoyé par nicolas.sitbon Voir le message
    Peut on avoir un code qui compile avec les corrections?
    Je transmets ça dès que possible ...
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  18. #18
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    En fait après avoir un peu plus réfléchi ... Il est évident que cela ne puisse fonctionner tel quel ... Ma structure contenant un pointeur, le memset m'enlève l'adresse alloué ... Du coup mon pointeur n'est plus bon => ça peut plus marcher.

    Il suffit donc juste de remédier à cela

    Du coup je ferme le sujet, mais je vous remercie grandement pour votre aide


    Bonne journée
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  19. #19
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Bleys Voir le message
    Parce que bool en C ça n'existe pas ?
    ah bon?
    6.2.5 Types
    ...
    2 An object declared as type _Bool is large enough to store the values 0 and 1.

    ...
    ...
    6.3.1.2 Boolean type
    1 When any scalar value is converted to _Bool, the result is 0 if the value compares equal
    to 0; otherwise, the result is 1.

    ...
    ...
    7.16 Boolean type and values <stdbool.h>
    1 The header <stdbool.h> defines four macros.
    2 The macro
    bool
    expands to _Bool.
    3 The remaining three macros are suitable for use in #if preprocessing directives. They
    are
    true
    which expands to the integer constant 1,
    false
    which expands to the integer constant 0, and
    __bool_true_false_are_defined
    which expands to the integer constant 1.
    4 Notwithstanding the provisions of 7.1.3, a program may undefine and perhaps then
    redefine the macros bool, true,and false.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  20. #20
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Et bien je ne savais pas que ça avait été ajouté ... au temps pour moi ...

    Par contre une question,

    tu dis que j'utilise mal fscanf avec des variables de type uintXX_t .... que dois-je donc utiliser ?

    Merci
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Freeze de l'application
    Par Julien Bodin dans le forum EDT/SwingWorker
    Réponses: 5
    Dernier message: 01/07/2010, 10h04
  2. Lancer form qui freeze l'application
    Par alacaraibe dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/12/2009, 18h17
  3. Mon application "FREEZE"
    Par donaldz dans le forum Langage
    Réponses: 2
    Dernier message: 08/04/2009, 23h27
  4. "Freeze" d'une application Java/SWING sur fedora 10
    Par logdrop dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 27/03/2009, 17h26
  5. Freeze de l'application
    Par thierry007 dans le forum VB.NET
    Réponses: 6
    Dernier message: 09/10/2008, 13h59

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