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 :

j'ai un trou de memoire


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 9
    Points
    9
    Par défaut j'ai un trou de memoire
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
        char  choix[1];   
     
        printf("VIEW   : v ou V --> Consulter les informations\n");
        printf("UPDATE : u ou U --> Mettre à jour les informations d'un demandeur\n");
        printf("DELETE : d ou D --> Supprimer un demandeur\n");
        printf("ADD    : a ou A --> Ajouter un demandeur\n");
        printf("SHOW   : s ou S --> Montrer la représentation de l'arbre binaire\n");
     
     
        printf("Commande:");
        scanf("%s",choix);
     
        if (choix = 'v')
         {
                    printf("cool");
         }
     
        else if (choix = 'v')
         {
                    printf("cool2");
         }
      system("PAUSE");	
      return 0;
    }
    Lorsque je compile le compilateur DEV C++ me dit qu'il y a des erreurs de compilations

    mon programme ne veut pas compiler
    je me rapel plus comment on fait

    dsl je me suis tromper de prog

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
        char  choix[1];   
     
        printf("VIEW   : v ou V --> Consulter les informations\n");
        printf("UPDATE : u ou U --> Mettre à jour les informations d'un demandeur\n");
        printf("DELETE : d ou D --> Supprimer un demandeur\n");
        printf("ADD    : a ou A --> Ajouter un demandeur\n");
        printf("SHOW   : s ou S --> Montrer la représentation de l'arbre binaire\n");
     
     
        printf("Commande:");
        scanf("%s",choix);
     
        if (choix = 'v')
         {
                    printf("cool");
         }
     
        else if (choix = 'u')
         {
                    printf("cool2");
         }
         else if (choix = 'd')
         {
                    printf("cool3");
         }
        else if (choix = 'a')
         {
                    printf("cool4");
         }
        else if (choix = 's')
         {
                    printf("cool5");
         }
      system("PAUSE");	
      return 0;
    }

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 19
    Points : 6
    Points
    6
    Par défaut
    hello !


    regarde bien tes tests, ici :
    et ici :
    y a comme un défaut ...

  3. #3
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Salut,

    Comme dirait Manu, un compilateur bien configuré t'aurais averti du problème

  4. #4
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        char  choix[1];   
     
    /* [...] */
     
     
        scanf("%s",choix);
    Attention à scanf et à tous ses problèmes... Attention au dépassement de tampon ! (i.e : que va-t-il se passer si l'utilisateur entre une chaîne assez longue plutôt qu'une simple lettre ? )

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    De toute façon
    est incorrect :
    - il faudrait ==
    - choix est un tableau pas un char
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    tu dois avoir un fros trou de mémoire alors

  7. #7
    En attente de confirmation mail
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Points : 112
    Points
    112
    Par défaut
    Tiens c'est bientôt Noë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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
        char  choix;
     
        printf("VIEW   : v ou V --> Consulter les informations\n");
        printf("UPDATE : u ou U --> Mettre ` jour les informations d'un demandeur\n");
        printf("DELETE : d ou D --> Supprimer un demandeur\n");
        printf("ADD    : a ou A --> Ajouter un demandeur\n");
        printf("SHOW   : s ou S --> Montrer la reprisentation de l'arbre binaire\n");
     
     
        printf("Commande:");
        choix=getchar();
     
            choix=tolower(choix);
     
            switch(choix)
            {
                    case 'v' :
                                            printf("cool-1\n");
                                            break;
                    case 'u' :
                                            printf("cool-2\n");
                                            break;
                    case 'd' :
                                            printf("cool-3\n");
                                            break;
                    case 'a' :
                                            printf("cool-4\n");
                                            break;
                    case 's' :
                                            printf("cool-5\n");
                                            break;
                    default :
                                            printf("boufon! t'as tapi la mauvaise lettre!\n");
                                            break;
            }
            return 0;
    }
    Tu devrais mettre un while pour éviter de faire terminer ton binaire...



    PS : testé sous Solaris avec gcc...

  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 : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Pour les réglages du compilateur c'est par ici :
    http://emmanuel-delahaye.developpez....fg_compilo_gcc
    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
    #include <stdio.h>
     
    int main (void)
    {
       char choix;
       int ret;
       puts ("VIEW   : v ou V --> Consulter les informations\n"
             "UPDATE : u ou U --> Mettre à jour les informations d'un demandeur\n"
             "DELETE : d ou D --> Supprimer un demandeur\n"
             "ADD    : a ou A --> Ajouter un demandeur\n"
             "SHOW   : s ou S --> Montrer la représentation de l'arbre binaire");
     
       do
       {
          char temp[2];
          printf ("Commande:");
          ret = scanf ("%1[vVuUdDaAsS]", temp);
          scanf ("%*[^\n]"), getchar ();
          if (ret == 1)
             choix = temp[0];
       }
       while (ret != 1);
     
       switch (choix)
       {
       case 'v':
       case 'V':
          puts ("cool");
          break;
       case 'u':
       case 'U':
          puts ("cool2");
          break;
       case 'd':
       case 'D':
          puts ("cool3");
          break;
       case 'a':
       case 'A':
          puts ("cool4");
          break;
       case 's':
       case 'S':
          puts ("cool5");
       }
     
       getchar ();
       return 0;
    }
    "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 Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 717
    Points : 31 028
    Points
    31 028
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    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
    switch (choix)
       {
       case 'v':
       case 'V':
          puts ("cool");
          break;
       case 'u':
       case 'U':
          puts ("cool2");
          break;
       case 'd':
       case 'D':
          puts ("cool3");
          break;
       case 'a':
       case 'A':
          puts ("cool4");
          break;
       case 's':
       case 'S':
          puts ("cool5");
       }
    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
    switch (tolower(choix))
       {
       case 'v':
          puts ("cool");
          break;
       case 'u':
          puts ("cool2");
          break;
       case 'd':
          puts ("cool3");
          break;
       case 'a':
          puts ("cool4");
          break;
       case 's':
          puts ("cool5");
          break;
       }
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Je sais mais j'évite un appel de fonction pour si peu.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  11. #11
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    switch (choix >= 'A' && choix <= 'Z' ? choix + ('a' - 'A') : choix)
    {
    ...

  12. #12
    En attente de confirmation mail
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Points : 112
    Points
    112
    Par défaut
    donc pour résumer, ça donnerait :

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
        char  choix;
     
        printf("VIEW   : v ou V --> Consulter les informations\n");
        printf("UPDATE : u ou U --> Mettre ` jour les informations d'un demandeur\n");
        printf("DELETE : d ou D --> Supprimer un demandeur\n");
        printf("ADD    : a ou A --> Ajouter un demandeur\n");
        printf("SHOW   : s ou S --> Montrer la reprisentation de l'arbre binaire\n");
     
     
        printf("Commande:");
        choix=getchar();
     
            switch (choix >= 'A' && choix <= 'Z' ? choix + ('a' - 'A') : choix)
            {
                    case 'v' :
                                            printf("cool-1\n");
                                            break;
                    case 'u' :
                                            printf("cool-2\n");
                                            break;
                    case 'd' :
                                            printf("cool-3\n");
                                            break;
                    case 'a' :
                                            printf("cool-4\n");
                                            break;
                    case 's' :
                                            printf("cool-5\n");
                                            break;
                    default :
                                            printf("boufon! t'as tapi la mauvaise lettre!\n");
                                            break;
            }
            return 0;
    }
    je pense qu'on ne peux pas mieux niveaux "optimisation"...

  13. #13
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Non c'était un blague, vaut mieux utiliser toupper/tolower qu'ecrire cette ribambelle de code illisible (ou alors avoir une macro qui fait ça), mais franchement économiser UN appel de fonction c'est comme se tater entre prendre un int ou un short pour une variable locale : c'est completement hors de propos

  14. #14
    En attente de confirmation mail
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par Gruik Voir le message
    Non c'était un blague, vaut mieux utiliser toupper/tolower qu'ecrire cette ribambelle de code illisible (ou alors avoir une macro qui fait ça), mais franchement économiser UN appel de fonction c'est comme se tater entre prendre un int ou un short pour une variable locale : c'est completement hors de propos
    Alors ça c'est pas très marrant...au début je doutais...puis j'me suis dit mais non c'est le modérateur, il sait ce qu'il dit quand même...mais d'un côté il faudrait peut-être testé, peut-être qu'on gagne quelques µs...qui sait ? Mais là j'ai pas le courage ce soir...

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Déjà tester, avec tolower() on perd rien parcontre il y a d'autre fonction parfois ou...
    C'est juste une habitude que j'avais prise à cause du boulot ou on faisait des gros calculs en boucle et la le gain se faisait sentir mais bien sûr dans ce cas précis ça ne sert strictement à rien.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  16. #16
    En attente de confirmation mail
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Déjà tester, avec tolower() on perd rien parcontre il y a d'autre fonction parfois ou...
    C'est juste une habitude que j'avais prise à cause du boulot ou on faisait des gros calculs en boucle et la le gain se faisait sentir mais bien sûr dans ce cas précis ça ne sert strictement à rien.
    tu te rappelles des fonctions où l'on peut sentir la différence ?

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Je pourrais en citer plusieurs mais ça ne voudrait strictement rien dire dans la mesure ou cela peut varier d'une plateforme à une autre, d'un compilateur à un autre, d'une librairie à un autre, bref c'est à toi de faire les tests qui vont bien et voir les gains ou pertes de performance.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  18. #18
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Citation Envoyé par jeremy13 Voir le message
    Alors ça c'est pas très marrant...au début je doutais...puis j'me suis dit mais non c'est le modérateur, il sait ce qu'il dit quand même...mais d'un côté il faudrait peut-être testé, peut-être qu'on gagne quelques µs...qui sait ? Mais là j'ai pas le courage ce soir...
    Désolé 8) C'était aussi pour montrer un peu de technique..
    Apres pour le gain de temps, je voulais dire ceci : éviter d'avoir ce genre de considérations, enfin faut éviter de perdre du temps à se poser des questions là dessus, vaut mieux chercher la simplicité du code (le plus court, le plus simple, le plus naturel, le moins tordu)

  19. #19
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 717
    Points : 31 028
    Points
    31 028
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Déjà tester, avec tolower() on perd rien parcontre il y a d'autre fonction parfois ou...
    Boaf ça n'a pas influencé mon code mais juste pour info: c'est utile de savoir que tolower() c'est plus souvent une macro qu'une fonction...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. trou de memoire
    Par looping dans le forum Langage
    Réponses: 3
    Dernier message: 13/08/2008, 07h43
  2. [LG]Mémoire dynamique
    Par FJUILLET dans le forum Langage
    Réponses: 5
    Dernier message: 10/02/2004, 11h15
  3. [swing] probleme de memoire
    Par leBigouden dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/05/2003, 14h19
  4. gestionnaire de memoire
    Par elone dans le forum C
    Réponses: 2
    Dernier message: 23/01/2003, 00h31
  5. récupérer la memoire et tableau dynamique
    Par Guigui_ dans le forum Langage
    Réponses: 6
    Dernier message: 06/01/2003, 08h02

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